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

Làm cách nào để cải thiện Truy vấn MySQL này bằng cách sử dụng phép nối?

Bạn còn left join venues , nhưng bạn có các điều kiện trong where mệnh đề về venues đã tham gia hàng, vì vậy chỉ các hàng đã tham gia sẽ được trả lại. Tuy nhiên, đó là một vấn đề phụ - hãy đọc để biết lý do tại sao bạn không cần tham gia.

Tiếp theo, nếu thành phố là vancouver , không cần phải cũng kiểm tra quốc gia hoặc tiểu bang.

Cuối cùng, nếu bạn đang cố gắng tìm "có bao nhiêu sự kiện trong tương lai ở Vancouver", bạn không cần tham gia vì id địa điểm là một hằng số!

Hãy thử điều này:

select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate() 
and te_id != 0

Mysql sẽ sử dụng chỉ mục trên venueid mà bạn không cần phải sử dụng một gợi ý. Nếu không, hãy thực hiện điều này:

analyze events

sẽ cập nhật thống kê về phân phối dữ liệu trong các cột được lập chỉ mục. Lưu ý rằng nếu nhiều sự kiện của bạn diễn ra ở Vancouver, thì không sẽ hiệu quả hơn sử dụng một chỉ mục (vì hầu hết các hàng vẫn phải được truy cập).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Doctrine:VỀ CẬP NHẬT KHÓA DUPLICATE

  2. Điền lựa chọn thả xuống từ bảng cơ sở dữ liệu

  3. Phương thức không đồng bộ MySQL C # không hoạt động?

  4. Các kết quả khác nhau trong sqlfiddle.com 5.5.30 và MariaDB 5.5.31

  5. Chèn nhiều mục vào một ID MySQL từ biểu mẫu PHP đầu vào hộp kiểm