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

Chọn truy vấn có ba trong đó điều kiện chậm, nhưng cùng một truy vấn với bất kỳ sự kết hợp nào của hai trong ba nơi điều kiện nhanh

Hãy thử chia SQL hiện có thành hai phần và xem thời gian thực thi cho mỗi phần là bao nhiêu. Điều này hy vọng sẽ cung cấp cho bạn phần nào chịu trách nhiệm cho sự chậm chạp:

phần 1:

SELECT table_1.id
  FROM table_1
  LEFT JOIN table_2
    ON (table_1.id = table_2.id)
 WHERE table_1.col_condition_1 = 0
   AND table_1.col_condition_2 NOT IN (3, 4)
   AND table_2.id is NULL

và phần 2 (lưu ý phần tham gia bên trong tại đây):

SELECT table_1.id
  FROM table_1
  JOIN table_2
    ON (table_1.id = table_2.id)
 WHERE table_1.col_condition_1 = 0
   AND table_1.col_condition_2 NOT IN (3, 4)
   AND table_1.date_col > table_2.date_col

Tôi hy vọng phần 2 sẽ dài hơn. Trong điều này, tôi nghĩ rằng một chỉ mục trên cả table_1 và table_2 trên date_coll sẽ hữu ích.

Tôi không nghĩ rằng chỉ mục tổng hợp sẽ giúp ích gì cả trong lựa chọn của bạn.

Điều này cho thấy rất khó để chẩn đoán lý do tại sao ba điều kiện kết hợp với nhau sẽ ảnh hưởng xấu đến hiệu suất. Nó dường như liên quan đến việc phân phối dữ liệu của bạn. Không chắc về mySql nhưng trong Oracle, bộ sưu tập thống kê trên các bảng đó sẽ tạo ra sự khác biệt.

Hy vọng nó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các móc không kích hoạt khi chèn các truy vấn thô qua phần tiếp theo.query ()

  2. Kết nối Mysql Tomcat 7 trên Openshift

  3. Các mục tìm kiếm và hiển thị trang web PHP

  4. Cách cung cấp các truy vấn mysql từ bash

  5. hiển thị dòng mới mysql trong HTML