Đối với truy vấn này:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Tôi sẽ đề xuất các chỉ mục trên A(year, id1, id2)
và B(id1, id2, year)
.
Bạn cũng có thể viết truy vấn dưới dạng:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
Câu trả lời cho câu hỏi của bạn là "có" và lập chỉ mục trên B
là điều đúng đắn để làm. Trong phiên bản này, thứ tự của các cột trong chỉ mục không thực sự quan trọng.