Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL có tự động tối ưu hóa các truy vấn con không?

Thật không may, MySQL không tốt trong việc tối ưu hóa các truy vấn con bằng IN. Đây là từ tài liệu MySQL :

Hãy thử sử dụng THAM GIA để thay thế.

Bởi vì MySQL hoạt động từ trong ra ngoài, đôi khi bạn có thể đánh lừa MySQL bằng cách gói truy vấn con bên trong một truy vấn con khác như vậy:

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

Đây là giải pháp THAM GIA:

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'

Lưu ý rằng tôi bắt đầu từ bên trong và đi ra ngoài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một bảng SQL nội tuyến ngay lập tức (đối với một phép nối không bao gồm bên trái)

  2. Định dạng này là gì?

  3. Làm cách nào để chèn ký tự utf-8 mb4 (biểu tượng cảm xúc trong ios5) trong mysql?

  4. MySql, tách một chuỗi và chèn vào bảng

  5. MySQL NET Connect 6.7.2 trong Visual Studio 2012