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

Klausa SQL IN lebih lambat dari kueri individual

Ini adalah kekurangan yang diketahui di MySQL.

Seringkali benar bahwa menggunakan UNION berkinerja lebih baik daripada kueri rentang seperti yang Anda tampilkan. MySQL tidak menggunakan indeks dengan sangat cerdas untuk ekspresi menggunakan IN (...) . Lubang serupa ada di pengoptimal untuk ekspresi boolean dengan OR .

Lihat http ://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/ untuk beberapa penjelasan dan tolok ukur terperinci.

Pengoptimal sedang ditingkatkan setiap saat. Kekurangan dalam satu versi MySQL dapat diperbaiki di versi berikutnya. Jadi, ada baiknya menguji kueri Anda pada versi yang berbeda.

Juga menguntungkan untuk menggunakan UNION ALL alih-alih hanya UNION . Kedua kueri menggunakan tabel sementara untuk menyimpan hasil, tetapi perbedaannya adalah UNION berlaku DISTINCT ke set hasil, yang menimbulkan semacam un-indexed tambahan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menyimpan kata sandi dengan aman untuk api tanpa mengenkripsinya

  2. mysql dump - kecualikan beberapa data tabel

  3. Mengambil perubahan dari tabel dengan sungai ElasticSearch JDBC

  4. JDBC selalu menguji baris terakhir tabel MySQL?

  5. Tidak dapat menemukan baris yang cocok di tabel pengguna