Dalam desain database, kami sering menggunakan guid atau int sebagai kunci utama, dan sesuai dengan pengetahuan yang telah kami pelajari, kami selalu merasa bahwa int lebih efisien sebagai kunci utama, tetapi tidak mungkin tanpa pengujian yang cermat
Jelaskan alasannya. Kebetulan selama pengoptimalan database hari ini, saya mengalami masalah ini, jadi saya melakukan pengujian.
Lingkungan Uji:
PC Desktop Pentiun(R) 4 CPU 3.06GHz Menangkan XP profesional RAM 1.5G DDR SQL Server 2005 Pribadi
Proses pengujian:
Pertama, buat database pengujian, Uji
Hasil tes adalah sebagai berikut:
Seperti disebutkan di atas, efisiensi menggunakan int sebagai kunci utama ditingkatkan dibandingkan dengan menggunakan guid sebagai kunci utama, terutama ketika ada kueri koneksi dan menghapus catatan.
Selain itu, dalam kueri data dengan kunci utama di GUID hari ini, batas waktu kueri berulang kali terjadi karena bersarang beberapa hasil sub-kueri. Oleh karena itu, saya mendukung penggunaan int sebagai kunci utama, dan saya tidak setuju dengan guid sebagai kunci utama. Pandangan di atas mewakili pendapat pribadi, dan setiap orang dipersilakan untuk mengungkapkan pendapat mereka dan menjelaskan kelebihan dan kekurangan guid dan int sebagai kunci utama.
Tes tindak lanjut:
Setelah diingatkan oleh saudara-saudara, indeks non-clustered telah ditambahkan ke dua subtabel hari ini:
BUAT Index_Detail_Guid INDEKS NON-KLUSTER DI Test_Guid_Detail(Guid) BUAT Index_Detail_id INDEKS NON-KLUSTER DI Test_Int_Detail(id) Kemudian saya melakukan kueri koneksi internal dan menemukan bahwa seperti yang dikatakan @Xu Shaoxia, efisiensinya memang tidak cukup jelas untuk menunjukkan lebih dari 50%, dan pada dasarnya hanya sekitar 23% peningkatan, yang masih dapat diterima.
Oleh karena itu, disarankan
1. Pada sistem yang sering perlu melakukan migrasi data, disarankan untuk menggunakan Guid. Dan menambahkan indeks non-kluster ke bidang kunci asing yang sesuai, yaitu bidang yang digunakan untuk kueri gabungan, sangat bermanfaat untuk meningkatkan kinerja. Bidang kondisi where juga dapat ditambahkan sesuai untuk indeks non-kluster.
2. Saat menggunakan jenis Guid sebagai kunci utama, jenis data harus unikidentifier, dan pastikan untuk mengingat untuk membatalkan "indeks agregat" kunci primer
3. Untuk sistem yang tidak perlu dimigrasikan, atau sistem kecil, masih sangat nyaman untuk menggunakan int sebagai kunci utama, dan masih ada peningkatan efisiensi tertentu.
|