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

Mengoptimalkan kueri mysql saya untuk menggunakan indeks untuk menyortir

Saya percaya bahwa kueri yang Anda miliki mungkin cocok dengan sebagian besar data dalam tabel. Dalam situasi seperti ini, pengoptimal MySQL sering memilih untuk melakukan pemindaian tabel dan mengabaikan indeks sepenuhnya, karena sebenarnya lebih cepat daripada melalui kesulitan membaca tambahan seluruh indeks dan menggunakannya untuk memilih data. Jadi dalam hal ini, saya menduga bahwa public_private='yes' and approved='yes' cocok dengan sebagian besar meja Anda. Oleh karena itu, jika MySQL melompat menggunakan indeks karena hal ini, maka itu juga tidak tersedia untuk pengurutan.

Jika Anda benar-benar ingin menggunakan indeks, maka solusinya adalah menggunakan FORCE INDEX :

select * from videos FORCE INDEX (approved_2) where public_private='public' and approved='yes' order by number_of_views desc;

Namun, saya akan menjalankan beberapa tes untuk memastikan bahwa apa yang Anda dapatkan sebenarnya lebih cepat daripada apa yang telah dipilih oleh pengoptimal MySQL. Rupanya pengoptimal memang memiliki beberapa masalah dengan membuat pilihan untuk memesan, jadi Anda pasti bisa mencobanya dan melihat apakah performa Anda meningkat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan sintaks SQL dekat desc

  2. Tutorial rating bintang jquery menggunakan php dan mysql

  3. Konversi tanggal MySQL

  4. Panduan Merancang Basis Data Untuk Acara Kalender Dan Pengingat Di MySQL

  5. Laravel + Vagrant =Akses ditolak untuk pengguna 'root'@'localhost'