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

Indeks dan urutan MySQL

Urutan indeks penting ketika ketentuan kueri Anda hanya berlaku untuk PART dari indeks. Pertimbangkan:

  1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

  2. SELECT * FROM table WHERE first_name="john"

  3. SELECT * FROM table WHERE last_name="doe"

Jika indeks Anda adalah (first_name , last_name ) kueri 1 dan 2 akan menggunakannya, kueri #3 tidak. Jika indeks Anda adalah (last_name , first_name ) kueri 1 dan 3 akan menggunakannya, kueri #2 tidak. Mengubah urutan kondisi dalam klausa WHERE tidak berpengaruh dalam kedua kasus tersebut.

Detailnya di sini

Perbarui :
Jika hal di atas tidak jelas - MySQL hanya dapat menggunakan indeks jika kolom dalam kondisi kueri membentuk awalan paling kiri dari indeks. Kueri #2 di atas tidak dapat menggunakan (last_name , first_name ) indeks karena hanya berdasarkan first_name dan first_name BUKAN awalan paling kiri dari (last_name , first_name ) indeks.

Urutan kondisi DALAM kueri tidak masalah; kueri #1 di atas akan dapat menggunakan (last_name , first_name ) indeks baik-baik saja karena kondisinya first_name dan last_name dan, jika digabungkan, keduanya membentuk awalan paling kiri dari (last_name , first_name ) indeks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesulitan menginstal permata mysql di Ubuntu

  2. Pembagian basis data vs partisi

  3. Mengapa PDO_MySQL tidak mengembalikan bilangan bulat?

  4. Bagaimana cara membuat kelas model entitas generik yang mendukung id generik termasuk id yang dibuat secara otomatis?

  5. Menambahkan kolom SQL baru dengan nilai default