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

Apakah MySQL mengoptimalkan subquery secara otomatis?

Sayangnya, MySQL tidak terlalu baik dalam mengoptimalkan subquery dengan IN. Ini dari dokumentasi MySQL :

Coba gunakan JOIN sebagai gantinya.

Karena MySQL bekerja dari dalam ke luar, terkadang Anda dapat mengelabui MySQL dengan membungkus subquery di dalam subquery lain seperti:

SELECT COUNT(*) FROM table_name WHERE device_id IN
     (SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)

Inilah solusi GABUNG:

SELECT COUNT(DISTINCT t2.id) FROM table_name t1
  JOIN table_name t2
    ON t2.device_id = t1.device_id
  WHERE t1.NAME = 'SOME_PARA'

Perhatikan bahwa saya mulai dari dalam dan keluar juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Backup database MySQL dengan CodeIgniter

  2. Pemicu MySQL saya tidak berfungsi, sintaks sederhana, tidak rumit

  3. MySQL berapa ukuran maksimum database?

  4. Cara Mendapatkan Tanggal dan Waktu Saat Ini di MySQL

  5. Pencarian teks lengkap Django MySQL