【发布时间】:2010-09-13 18:13:33
【问题描述】:
问题:
Ajax 建议搜索食谱中的 [n] 成分。即:将食谱与多种成分相匹配。
例如:SELECT Recipes using "flower", "salt" 会产生:"Pizza", "Bread", "Saltwater" 等等。
表格:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
查询:
SELECT
Recipes.RecipesID,
Recipes.RecipesName,
Ingredients.IngredientsID,
Ingredients.IngredientsName
FROM
IngredientsRecipes
INNER JOIN Ingredients
ON IngredientsRecipes.IngredientsID = Ingredients.IngredientsID
INNER JOIN Recipes
ON IngredientsRecipes.RecipesID = Recipes.RecipesID
WHERE
Ingredients.IngredientsName IN ('salt', 'water', 'flower')
由于WHERE 子句的动态特性,我目前正在使用 ASP.NET C# 构建查询。
我不得不在我的代码层中构建查询,而不是使用存储过程/纯 SQL,理论上应该更快。
你们对我如何将所有逻辑从我的代码层转移到纯 SQL 或至少如何优化我正在做的事情的性能有任何想法吗?
我正在考虑临时表:
第一步:SELECT IngredientsID FROM Ingredients和INSERT INTO temp-table
第二步:SELECT RecipesName FROM Recipes加入IngredientsRecipes加入temp-table.IngredientsID
【问题讨论】:
标签: c# sql-server performance