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

Thứ tự các điều kiện trong mệnh đề WHERE có ảnh hưởng đến hiệu suất của MySQL không?

Đây là bản trình diễn hiển thị thứ tự của điều kiện mệnh đề WHERE có thể tạo ra sự khác biệt do đoản mạch. Nó chạy các truy vấn sau:

-- query #1
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;

-- query #2
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;

Sự khác biệt duy nhất giữa chúng là thứ tự của các toán hạng trong OR điều kiện.

myslowfunction cố ý ngủ trong một giây và có tác dụng phụ là thêm mục nhập vào bảng nhật ký mỗi khi nó được chạy. Dưới đây là kết quả của những gì được ghi lại khi chạy hai truy vấn:

myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4

Ở trên cho thấy rằng một hàm chậm được thực thi nhiều lần hơn khi nó xuất hiện ở bên trái của OR điều kiện khi toán hạng khác không phải lúc nào cũng đúng.

Vì vậy, hãy IMO câu trả lời cho câu hỏi:

là "Đôi khi nó có thể làm được."



  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ách nâng cấp MySQL trên CentOS

  2. Làm cách nào để ngăn truy vấn này in hai lần cùng một kết quả?

  3. Java / Mysql..SQLException:Một bảng phải có ít nhất 1 cột SQLState:42000 VendorError:1113

  4. PHP &MYSQL:sử dụng nhóm theo danh mục

  5. tải hình ảnh lên máy chủ trong Spring MVC và lưu trữ tham chiếu trong cơ sở dữ liệu mysql