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

Cara mengoptimalkan kueri MySQL berdasarkan paket EXPLAIN

Tergantung pada tujuan Anda dan kuerinya.

Umumnya, untuk setiap baris di EXPLAIN yang memiliki Using where , Anda harus memilikinya menggunakan indeks (possible keys dan keys kolom). Ini adalah filter Anda dan termasuk WHERE dan ON. Setelah itu tertulis Using index bahkan lebih baik. Artinya ada indeks penutup, dan MySQL dapat mengambil data langsung dari indeks daripada mengunjungi baris dalam data tabel.

Baris di mana tidak ada Using where , dan itu mengembalikan sejumlah besar baris harus dilihat. Ini mengembalikan nilai untuk semua baris dalam tabel. Saya tidak tahu apa pertanyaan Anda, jadi saya tidak tahu apakah harus waspada di sini. Coba filter kumpulan hasil untuk mengurangi ukuran dan meningkatkan kinerja.

Anda biasanya harus mencoba untuk menghindari melihat Using filesort atau Using temporary , meskipun itu hanya buruk jika Anda tidak mengharapkannya.

Filesort biasanya muncul dengan klausa ORDER. Anda biasanya ingin MySQL menggunakan indeks penutup (Using index ) sehingga baris dikembalikan secara berurutan dari server. Jika tidak, maka MySQL harus memesannya setelahnya, menggunakan filesort.

Using temporary bisa menjadi buruk ketika merujuk ke tabel turunan karena mereka tidak memiliki indeks. Tampaknya Anda telah secara eksplisit membuat tabel sementara dengan indeks, jadi di sini, itu tidak buruk. Terkadang, satu-satunya pilihan Anda adalah menggunakan tabel turunan, dan karenanya Using temporary .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Boolean tinyint(1) menyimpan nilai hingga 127?

  2. Javascript PHP? Lakukan sesuatu saat pengguna menutup halaman atau browser

  3. Kesalahan MySql:Tidak dapat memperbarui tabel dalam fungsi/pemicu tersimpan karena sudah digunakan oleh pernyataan yang memanggil fungsi/pemicu tersimpan ini

  4. Cara mengaktifkan INNODB di mysql

  5. GALAT:Galat 1005:Tidak dapat membuat tabel 'cat10e.recording' (errno:150)