Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

penalti kinerja string sebagai kunci utama?

DB perlu mempertahankan B-Tree (atau struktur serupa) dengan kunci sedemikian rupa agar mereka dipesan.

Jika kunci di-hash dan disimpan di B-Tree, tidak masalah untuk memeriksa keunikan dengan cepat kunci -- kunci masih dapat dicari secara efisien. Namun Anda tidak akan dapat menelusuri rentang secara efisien data (misalnya dengan LIKE ) karena B-Tree tidak lagi diurutkan sesuai dengan nilai String.

Jadi saya pikir sebagian besar DB benar-benar menyimpan String di B-Tree, yang dapat (1) mengambil lebih banyak ruang daripada nilai numerik dan (2) mengharuskan B-Tree untuk seimbang kembali jika kunci dimasukkan dalam urutan arbitrer (tidak ada gagasan tentang peningkatan nilai seperti pk numerik).

Penalti dalam praktiknya dapat berkisar dari yang tidak signifikan hingga yang sangat besar. Itu semua tergantung pada penggunaan, jumlah baris, ukuran rata-rata kunci string, kueri yang bergabung dengan tabel, dll.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony:Pengecualian terjadi pada driver:tidak dapat menemukan driver dengan mysql

  2. Kapan memilih Oracle daripada MySQL?

  3. Cara menggunakan koneksi persisten mysqli di halaman yang berbeda

  4. cara mengindeks ulang tabel mysql

  5. Simulasikan fungsi lag di MySQL