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

Sử dụng SELECT trong SELECT trong truy vấn mysql

Trong MySQL, thực hiện một truy vấn con như thế này là một "truy vấn tương quan". Điều này có nghĩa là kết quả của SELECT bên ngoài phụ thuộc vào kết quả của SELECT bên trong . Kết quả là truy vấn bên trong của bạn được thực thi một lần trên mỗi hàng, điều này rất chậm.

Bạn nên cấu trúc lại truy vấn này; cho dù bạn tham gia hai lần hay sử dụng hai truy vấn hầu hết đều không liên quan. Tham gia hai lần sẽ mang lại cho bạn:

SELECT something
FROM posts
INNER JOIN tag_map ON tag_map.id = posts.id
INNER JOIN tags ON tags.tag_id = tag_map.tag_id
WHERE tags.tag IN ('tag1', ...)

Để biết thêm thông tin, hãy xem hướng dẫn sử dụng MySQL về cách chuyển đổi truy vấn con thành JOIN .

Mẹo:EXPLAIN SELECT sẽ chỉ cho bạn cách trình tối ưu hóa lập kế hoạch xử lý truy vấn của bạn. Nếu bạn thấy DEPENDENT SUBQUERY bạn nên cấu trúc lại, chúng quá chậm.



  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 phù hợp / chống lại

  2. MySQL - Câu lệnh CASE so với IF so với hàm IF

  3. cách tốt nhất để tạo ID mysql ngẫu nhiên bằng PHP là gì

  4. So sánh MySQL với giá trị null

  5. Không tìm thấy bảng cơ sở hoặc chế độ xem:1146 Bảng Laravel 5