MySQL 5.5.8:
Câu hỏi 1:
Có sự khác biệt nào trong các tuyên bố sau và nếu vậy, đó là ưu tiên thực hiện khôn ngoan? Điều này thậm chí có thể được trả lời mà không cần biết số lượng hàng của các bảng trước và sau mệnh đề where và việc sử dụng chỉ mục có thể?
SELECT *
FROM a JOIN b ON a.id = b.id AND a.col2 BETWEEN 1 AND 5;
SELECT *
FROM a JOIN b ON a.id = b.id
WHERE a.col2 BETWEEN 1 AND 5;
Lý do tôi hỏi là vì nếu ví dụ các bảng rất lớn nhưng mệnh đề nơi lọc 99.9999% hồ sơ, tôi không muốn lãng phí thời gian tham gia các bảng lớn nếu sau khi tham gia 99.9999% hồ sơ không được sử dụng.
Câu hỏi 2:
Thực hiện cùng một tình huống, câu lệnh nào (nếu có sự khác biệt) yêu cầu ít IOPS hơn. (chỉ số hiện diện trên b.id và một trên a.col2)