Itu tergantung pada mesin Anda. Kebijaksanaan umum adalah bahwa membaca itu murah, beberapa byte di sana-sini tidak akan secara signifikan mempengaruhi kinerja database ukuran kecil hingga menengah.
Lebih penting lagi, itu tergantung pada kegunaan mana Anda akan meletakkan kunci primer. Serial integer memiliki keuntungan karena mudah digunakan dan diimplementasikan. Mereka juga, tergantung pada implementasi spesifik dari metode serialisasi, memiliki keuntungan dengan cepat diturunkan, karena kebanyakan database hanya menyimpan nomor seri di lokasi yang tetap, daripada menurunkannya dengan Select max(ID)+1 from foo
cepat.
Pertanyaannya menjadi: bagaimana kunci 5 karakter menyajikan "nilai yang berarti" bagi Anda dan aplikasi? Bagaimana nilai ini dibuat, dan apakah perlu waktu lebih banyak atau lebih sedikit daripada menemukan nomor seri yang bertambah. Meskipun ada sejumlah kecil ruang yang dihemat dalam beberapa bilangan bulat, sebagian besar sistem akan mengabaikan penghematan ruang ini.
Tidak ada implikasi kinerja, kecuali bahwa skema karakter mensyaratkan bahwa tidak pernah ada mesin otomatis, karena "kunci" Anda tidak dapat diubah. Untuk domain spesifik Anda, jangan repot-repot dengan kunci buatan, dan cukup gunakan bahasa Cina, Jepang dan Thailand sebagai nama kunci. Meskipun Anda tidak dapat menjamin keunikan atas aplikasi apa pun yang mungkin, dalam lingkup Anda, jauh lebih masuk akal untuk menggunakannya daripada singkatan 5 karakter yang mengerikan dan dipaksakan. Tidak ada dampak kinerja yang signifikan hingga Anda mendapatkan jutaan tupel.
Atau, jika Anda hanya melacak berdasarkan negara asal, dan bukan masakan daerah tertentu (Kanton, Sichuan, Sisilia, Umbria, Calabrian, Yucatecan, Oaxacan, dll.), Anda selalu dapat menggunakan kode ISO 3166 saja .
Jika saya memiliki 10.000 resep, apakah perbedaan antara kunci 5 karakter dan 20 karakter mulai bertambah?
Ruang murah . Ketika Anda berbicara tentang 10.000.000 resep yang sedang Anda lakukan operasi OLAP, mungkin. Dengan resep 10k, Anda melihat ruang 150k.
Tetapi sekali lagi, itu tergantung. Jika Anda memiliki jutaan rekaman, dan melakukan penggabungan padanya, maka masuk akal untuk mendenormalkan pencarian untuk sesuatu yang sepele ini (ke tampilan yang terwujud). Untuk semua tujuan praktis, efisiensi gabungan relatif pada mesin modern antara kunci 5 karakter dan kunci panjang variabel sangat mirip dengan yang identik. Untungnya, kita hidup di dunia CPU yang berlimpah dan cakram yang berlimpah. Yang jahat adalah terlalu banyak gabungan dan kueri inefisiensi, daripada perbandingan karakter-per-karakter. Dengan itu, selalu tes .
Hal-hal P&T pada tingkat ini sangat bergantung pada basis data sehingga generalisasi sangat sulit. Bangun dua model sampel dari basis data, isi dengan perkiraan jumlah catatan, lalu lihat mana yang lebih cepat. Dalam pengalaman saya, panjang karakter tidak membuat perbedaan besar dibandingkan dengan indeks yang baik, konfigurasi memori yang baik, dan elemen penyetelan kinerja kritis lainnya.