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

Mệnh đề MySQL IN có thực thi truy vấn con nhiều lần không?

Giả định của bạn là sai; truy vấn con sẽ chỉ được thực thi một lần. Lý do tại sao nó chậm hơn tham gia là vì IN không thể tận dụng các chỉ mục; nó phải quét các đối số của nó một lần cho mỗi lần WHERE mệnh đề được đánh giá, nghĩa là một lần mỗi hàng trong bảngA. Bạn có thể tối ưu hóa truy vấn mà không cần sử dụng các biến hoặc thủ tục được lưu trữ, chỉ bằng cách thay thế IN với một tham gia, do đó:

SELECT tableA.field1, tableA.field2, [...]
FROM tableA 
  INNER JOIN tableB ON tableA.id = tableB.id

Trừ khi bạn không ngại lấy lại mọi trường từ cả hai bảng, bạn cần liệt kê các trường bạn muốn trong SELECT mệnh đề; tableA.* chẳng hạn, sẽ gây ra lỗi cú phá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. Làm thế nào để CHỌN hàng ngẫu nhiên từ bảng với một số hàng chính xác?

  2. Có trình điều khiển cho mysql trên nodejs hỗ trợ các thủ tục được lưu trữ không?

  3. @ Symbol - giải pháp cho truy vấn SELECT đệ quy trong Mysql?

  4. Cách lưu trữ LocalTime ở chế độ ngủ đông

  5. Biến không xác định:pdo, gọi hàm thành viên chuẩn bị () trên null