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

Làm cách nào để giải thích một truy vấn có các tham số trong MySQL

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 ?
  1. Tham số 1 ==Foo - Có thể sử dụng quét chỉ mục nếu có chỉ mục.
  2. Tham số 1 ==%Foo - Yêu cầu quét toàn bộ bảng, ngay cả khi có chỉ mục
  3. 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 ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Connector C ++ 64bit xây dựng từ nguồn trong Visual Studio 2012

  2. PDO / MySQL rowCount không trả về như mong đợi

  3. php chèn nhiều hàng trong cơ sở dữ liệu MYSQL

  4. MySQL Sum () nhiều cột

  5. Ngoại lệ khi cố gắng chạy chương trình java từ maven