SQL Server: cláusula dinámica donde
Problema:
Ajax sugiere-busca en [n] ingredientes en recetas. Es decir: combina recetas contra múltiples ingredientes.
Por ejemplo:SELECT Recipes using "flower", "salt"
produciría"Pizza", "Bread", "Saltwater"
Etcétera.
Mesas:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
Consulta:
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')
Actualmente estoy construyendo mi consulta usando ASP.NET C # debido a la naturaleza dinámica de laWHERE
cláusula.
Muerdo que tengo que construir la consulta en mi capa de código en lugar de usar un procedimiento almacenado / SQL puro, que en teoría debería ser mucho más rápido.
¿Han pensado en cómo movería toda la lógica de mi capa de código a SQL puro, o al menos cómo puedo optimizar el rendimiento de lo que estoy haciendo?
Estoy pensando en las tablas temporales:
Paso uno: SELECT IngredientsID FROM Ingredients
yINSERT INTO temp-table
Segundo paso: SELECT RecipesName FROM Recipes
unido conIngredientsRecipes
unido contemp-table.IngredientsID