Persyaratan: Selama wawancara baru-baru ini, saya ditanya apa perbedaan antara SQL Server database int dan guid sebagai kunci utama.Keduanya memiliki pro dan kontra, harap pertimbangkan sesuai dengan skenario bisnis Anda yang sebenarnya。
Teks asli 1:Login hyperlink terlihat.
Keuntungan menggunakan INT sebagai kunci utama:
1. Membutuhkan ruang penyimpanan data kecil, hanya 4 byte.
2. Performa penggunaan INT untuk operasi penyisipan dan pembaruan lebih baik daripada GUID, sehingga menggunakan int akan meningkatkan kinerja aplikasi.
3. Operasi Indeks dan Gabungan, int memiliki kinerja terbaik.
4. Mudah diingat.
5. Dukungan untuk mendapatkan nilai terbaru melalui fungsi, seperti: Scope_Indentity().
Kerugian menggunakan INT sebagai kunci utama
1. Jika sering ada operasi penggabungan tabel, mungkin ada duplikasi kunci primer.
2. Ada batasan ruang lingkup penggunaan data LINT. Jika ada data dalam jumlah besar, itu mungkin melebihi rentang nilai LINT.
3. Sulit untuk memproses tabel data tersimpan terdistribusi.
Keuntungan menggunakan GUID sebagai kunci utama:
1. Ini unik.
2. Ada sedikit peluang untuk duplikasi.
3. Sangat cocok untuk operasi penyisipan dan pembaruan dalam sejumlah besar data.
4. Penggabungan data lintas server sangat nyaman.
Kerugian menggunakan GUID sebagai kunci utama:
1. Ruang penyimpanannya besar (16 byte), sehingga akan memakan lebih banyak ukuran disk.
2. Sulit untuk diingat. Kinerja operasi gabungan lebih rendah daripada int.
3. Tidak ada fungsi bawaan untuk mendapatkan kunci utama GUID terbaru yang dihasilkan.
4. GUID sebagai kunci utama akan ditambahkan ke indeks lain pada tabel, sehingga akan mengurangi kinerja.
Ringkasan:
Di atas mencantumkan kelebihan dan kekurangan tipe data GUID dan INT sebagai kunci utama. Saya pikir untuk volume data besar, disarankan untuk menggunakan guid sebagai kunci utama. padahalMenggunakan int akan memberi Anda kinerja terbaik。
Komentar: GunakanPerforma GUID yang dipesan meningkat pesat。
Teks asli dua:Login hyperlink terlihat.
Identitas adalah tipe seluruh jenis, desimal tanpa definisi desimal, bigint dapat diterima
Guid adalah biner tetap(16), yaitu 16 byte
identitas bertambah (atau dikurangi), dan GUID bersifat acak, sehingga saat data dimasukkan,Yang pertama tidak akan menghasilkan fragmen apa pun, sedangkan yang terakhir akan menghasilkan fragmen apa pun, dan karena yang terakhir rusak, urutannya harus disesuaikan saat dimasukkan, sehingga yang pertama umumnya lebih baik daripada yang terakhir dalam hal kinerja.
Sejumlah besar informasi biasanya dibagi menjadi beberapa tabel, sehingga identitas masih lebih cocok dalam banyak kasus
Adapun pengertian kunci primer, hal ini tergantung bagaimana Anda mempertimbangkannya saat mendesain, untuk pengolahan data itu sendiri, kunci primer tidak perlu bermakna, dan jika Anda membutuhkan kunci primer untuk mengandung makna bisnis, maka kunci primer identitas tentu tidak ada artinya, tetapi secara umum lebih baik memisahkan makna bisnis dan pengolahan data, bisnis selalu berubah, jika Anda ingin membawa makna ke kunci utama desain tabel, maka bisnis berubah, Anda harus lebih menyesuaikan struktur tabel.
Teks asli tiga:Login hyperlink terlihat.
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, tipe data harus uniqueidentifier dan pastikan untuk mengingatnyaBatalkan kunci utama "Indeks agregat”
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.
(Akhir)
|