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

indeks bidang bit di MYSQL

Secara umum, tidak. Bidang bi-state tidak mempercepat kueri saat diindeks karena Anda harus melihat rata-rata setengah baris. Anda ingin entri indeks Anda selektif - entri tertentu dalam indeks harus mewakili hanya sebagian kecil dari nilai yang mungkin (misalnya, kurang dari 10%, lebih disukai ke dalam pecahan persen). Kemudian menggunakan indeks mengabaikan sebagian besar data dalam tabel, yang memberi Anda manfaat kinerja.

Beberapa DBMS mendukung indeks bitmap. Mereka dapat membantu, tetapi Anda masih mengalami masalah selektivitas.

Pertanyaan yang diperbarui mengatakan bahwa jumlah nilai dengan nilai 1 akan kecil (kurang dari satu persen); akankah indeks memberi Anda keuntungan sekarang?

Jawabannya adalah:

  • Untuk kueri di mana Anda menentukan bahwa nilainya adalah 1, maka ya, indeks pada kolom dapat memberikan manfaat, asalkan pengoptimal benar-benar menggunakan indeks. Anda mungkin perlu men-tweak DBMS untuk membuatnya menyadari bahwa indeks miring untuk digunakan dengan kueri di mana nilainya adalah 1; ini cenderung spesifik untuk DBMS, tetapi memperbarui statistik dalam berbagai samaran adalah nama permainannya, mungkin menggunakan petunjuk dalam kueri SQL juga. Tentu saja, jika pengoptimal tidak pernah menggunakan indeks, maka pengoptimal tetap tidak memberikan manfaat - dan pengoptimal dapat memutuskan bahwa indeks lain lebih membantu dalam beberapa hal.

  • Untuk kueri yang nilainya 0, indeks tidak boleh digunakan. Kemungkinannya, DBMS akan terus mempertahankan indeks untuk nilai 0 juga - meskipun seharusnya tidak pernah menggunakannya. Ini akan menjadi DBMS yang tidak biasa yang dapat diperintahkan 'hanya mengindeks kolom ini untuk nilai selain nol', meskipun itu akan sangat bermanfaat.

Jadi - itu tergantung. Itu tergantung pada kueri, dan itu tergantung pada pengoptimal.

Perhatikan juga bahwa indeks komposit - pada beberapa kolom lain yang biasa digunakan dan kemudian bidang bit mungkin memberikan beberapa manfaat. Jadi, jika Anda hampir selalu memilih pada rentang tanggal, maka indeks gabungan pada kolom tanggal dan bidang bit (mungkin dalam urutan itu) akan memberi Anda indeks yang baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. prosedur tersimpan mysql lebih lambat 20 kali dari kueri standar

  2. Bagaimana cara menyimpan tanggal masa depan (!) dalam database

  3. Joomla:Panggil fungsi pembantu dari dalam model?

  4. tidak dapat mengubah tabel, Tabel 'xxx/#sql-ib265' sudah ada

  5. Bagaimana saya bisa menyimpan output kueri ke dalam tabel sementara dan menggunakan tabel dalam kueri baru?