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

Akankah indeks gabungan dengan kolom kedua dengan kardinalitas rendah cukup mempengaruhi kinerja sehingga harus digunakan?

Biaya pemeliharaan indeks (kolom tunggal atau multi-kolom) hampir selalu sebanding dengan peningkatan kinerja ketika indeks itu digunakan. Ini adalah kenaikan kecil pada setiap INSERT /DELETE , ditambah biaya jika mengubah nilai bidang yang diindeks melalui UPDATE . (UPDATE kasus ini jarang terjadi.) Jadi, jangan khawatir tentang biaya "mempertahankan indeks gabungan".

WHERE `vehicles`.`type` IN ('Car')
  AND `vehicles`.`user_id` = 10

membutuhkan INDEX(user_id, type) .

Pengoptimal akan

  1. temukan bahwa indeks itu adalah kandidat yang memungkinkan,
  2. periksa beberapa statistik, lalu
  3. gunakan indeks, atau tentukan kardinalitasnya buruk dan cukup pindai tabelnya.

Sertakan indeks; jangan khawatir tentang itu.

Saya memesan bidang seperti itu, bukan (type, user_id) berdasarkan IN . Anda , yang menyiratkan bahwa Anda terkadang memiliki beberapa nilai untuk type .

Jika semua baris dalam tabel memiliki type = 'Car' , tidak masalah. Semua yang saya katakan masih berlaku. Pemborosan memasukkan type yang tidak perlu tidak signifikan.

Lebih baik memiliki semua "=" kolom terlebih dahulu dalam indeks, lalu paling banyak satu bidang lainnya. Diskusi lebih lanjut di sini .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat tabel dengan nama variabel php mysql

  2. Hapus Baris Duplikat di MySQL (Abaikan Kunci Utama)

  3. Peringkat Baris dalam Tampilan MySQL

  4. CakePHP - Mencari 3 tabel secara efisien menggunakan JOIN

  5. mysql menghitung hanya untuk nilai yang berbeda dalam kueri yang digabungkan