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

Respuestas a la pregunta(3)

Su respuesta a la pregunta