Có sự khác biệt giữa việc phát hành một truy vấn và phát hành hai truy vấn không? Vâng, tôi chắc chắn hy vọng như vậy. Công cụ SQL đang hoạt động và nó hoạt động gấp đôi (từ một góc độ nhất định) cho hai truy vấn.
Nói chung, phân tích cú pháp một truy vấn sẽ nhanh hơn phân tích cú pháp một truy vấn, trả về một tập kết quả trung gian, rồi đưa nó trở lại truy vấn khác. Có chi phí cao trong việc biên dịch truy vấn và chuyển dữ liệu qua lại.
Đối với truy vấn này:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
Bạn muốn có chỉ mục về users(location)
và location(id)
.
Tôi muốn chỉ ra một cái gì đó khác. Các truy vấn không tương đương. Truy vấn so sánh thực sự là:
select l.*
from location l
where l.id = 10;
Bạn đang sử dụng cùng một cột cho where
và on
. Do đó, đây sẽ là phiên bản hiệu quả nhất và bạn muốn có chỉ mục trên location(id)
.