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

Apakah ada metode optimal untuk memesan indeks komposit MySQL?

Sebagai aturan praktis, dalam indeks multi-kolom, Anda ingin kolom yang memiliki kardinalitas tertinggi, atau dengan kata lain, jumlah nilai yang berbeda tertinggi, untuk didahulukan dalam indeks.

Agar lebih akurat, Anda ingin kolom dengan kecocokan sesedikit mungkin dengan kriteria pencarian Anda terlebih dahulu sehingga Anda dapat mempersempit hasil yang ditetapkan sebanyak mungkin, tetapi secara umum, ini sama dengan kardinalitas tertinggi.

Jadi, dalam contoh Anda, Anda ingin kolom yang memiliki jutaan nilai berbeda berada di indeks sebelum kolom yang hanya memiliki 6 nilai berbeda.

Dengan asumsi Anda hanya memilih satu baris dari jutaan nilai, ini memungkinkan Anda untuk menghilangkan lebih banyak baris lebih cepat.

Saat mempertimbangkan dua kolom dengan kardinalitas yang sama, letakkan kolom yang lebih kecil terlebih dahulu (INTEGER kolom sebelum VARCHAR kolom) karena MySQL dapat membandingkan dan mengulanginya lebih cepat.

Satu peringatan adalah jika Anda memilih dengan rentang (mis. WHERE datecol > NOW() ), maka Anda ingin kolom rentang terjauh ke kanan, dan kolom Anda dengan satu konstanta (mis. WHERE id = 1 ) ke kiri. Ini karena indeks Anda hanya dapat digunakan untuk mencari dan mengurutkan hingga nilai rentang pertama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Variabel yang ditentukan pengguna MySQL dalam klausa WHERE

  2. Doctrine 2 DQL KASUS KETIKA di Hitung

  3. Mencari emoji di MySQL

  4. PDO dapatkan ID terakhir yang dimasukkan

  5. mysqli_koneksi ke server jauh