[英]SQL Subquery Optimization
我有兩個表, Categories
和RecipeCategories
Categories
**Categories**
CategoryID varchar (Primary Key)
Name varchar
**RecipeCategories**
RecipeID varchar
CategoryID varchar
Composite primary key
我正在尋找一種返回所有類別的CategoryID和Name的方法,以及配方是否實際上在該類別中。 我可以用類似的東西
SELECT c.CategoryID, c.Name,
(SELECT COUNT(*)
FROM RecipeCategories
WHERE RecipeID = @recipeId AND CategoryID = c.CategoryID))
FROM Categories c
但是我認為,如果桌子太大,那不會擴大規模。
SELECT c.CategoryID
, c.Name
, Case When (r.RecipeID is null) Then 'No' Else 'Yes' End
FROM Categories c
left join RecipeCategories r on r.CategoryID = c.CategoryID
and r.RecipeID = @recipeId
您可以使用下面的示例,但是要使此解決方案在大型環境中可伸縮,您需要為RecipeID編制索引。
SELECT c.CategoryID, c.Name, count(rc.Composite) FROM Categories c
LEFT JOIN RecipeCategories rc ON c.CategoryID = rc.CategoryID
WHERE RecipeID = @recipeId
GROUP BY c.CategoryID, c.Name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.