Vì vậy, miễn là bạn chỉ làm một dấu bằng (chứ không phải tương tự, điều này có thể ảnh hưởng đến đoản mạch), chỉ cần thay thế nó bằng một giá trị:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
Vì nó không thực sự thực hiện truy vấn, nên kết quả không được khác với thực tế. Có một số trường hợp điều này không đúng (tôi đã đề cập LIKE rồi). Đây là một ví dụ về các trường hợp khác nhau của LIKE
:
SELECT * FROM a WHERE a.foo LIKE ?
- Tham số 1 ==
Foo
- Có thể sử dụng quét chỉ mục nếu có chỉ mục. - Tham số 1 ==
%Foo
- Yêu cầu quét toàn bộ bảng, ngay cả khi có chỉ mục - Tham số 1 ==
Foo%
- Có thể sử dụng quét chỉ mục, tùy thuộc vào bản chất của chỉ mục và các yếu tố khác
Nếu bạn đang tham gia và mệnh đề where dẫn đến một sự kết hợp không thể xảy ra (và do đó nó sẽ ngắn mạch). Ví dụ:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
Nếu các tham số đầu tiên và thứ hai giống nhau, nó có một kế hoạch thực thi và nếu chúng khác nhau, nó sẽ ngắn mạch (và trả về 0 hàng mà không đánh vào bất kỳ dữ liệu nào) ...
Còn những người khác, nhưng đó là tất cả những gì tôi có thể nghĩ ra ngay lúc này ...