Jako przykład, chcę uzyskać listę wszystkich elementów z pewnymi znacznikami zastosowanymi do nich. Mogę zrobić jedną z następujących czynności:Wydajność SQL: GDZIE W podaplikowaniu vs. JOIN, a następnie GRUPA
SELECT Item.ID, Item.Name
FROM Item
WHERE Item.ID IN (
SELECT ItemTag.ItemID
FROM ItemTag
WHERE ItemTag.TagID = 57 OR ItemTag.TagID = 55)
Albo
SELECT Item.ID, Item.Name
FROM Item
LEFT JOIN ItemTag ON ItemTag.ItemID = Item.ID
WHERE ItemTag.TagID = 57 OR ItemTag.TagID = 55
GROUP BY Item.ID, Item.Name
Albo coś zupełnie innego.
Ogólnie (zakładając, że istnieje ogólna zasada), jakie jest bardziej skuteczne podejście?
@Larsenal: możesz zamienić 'LEFT JOIN' na' INNER JOIN' w twoim drugim zapytaniu, wyniki będą takie same. 'LEFT JOIN' zwróci' NULL's dla wierszy w 'ItemTag', które nie mają odpowiadającego' Item.ID', a twój warunek "WHERE" odfiltrowuje je. – Quassnoi