SQL Server: Dynamiczna klauzula gdzie

Problem:

Ajax zasugeruj wyszukiwanie w [n] składniki w przepisach. To znaczy: dopasuj przepisy do wielu składników.

Na przykład:SELECT Recipes using "flower", "salt" wytworzy:"Pizza", "Bread", "Saltwater" i tak dalej.

Tabele:

Ingredients [
    IngredientsID INT [PK],
    IngredientsName VARCHAR
]

Recipes [
    RecipesID INT [PK],
    RecipesName VARCHAR
]

IngredientsRecipes [
    IngredientsRecipesID INT [PK],
    IngredientsID INT,
    RecipesID INT
]

Pytanie:

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')

Obecnie konstruuję moje zapytanie przy użyciu ASP.NET C # ze względu na dynamiczną naturęWHERE klauzula.

Ugryzam, że muszę skonstruować zapytanie w mojej warstwie kodu zamiast używać procedury składowanej / czystego SQL, która teoretycznie powinna być znacznie szybsza.

Czy zastanawialiście się, jak przenieść całą logikę z mojej warstwy kodu do czystego SQL, a przynajmniej jak zoptymalizować wydajność tego, co robię?

Mam na myśli tabele tymczasowe:

Krok pierwszy: SELECT IngredientsID FROM Ingredients iINSERT INTO temp-table

Krok drugi: SELECT RecipesName FROM Recipes dołączył doIngredientsRecipes dołączył dotemp-table.IngredientsID

questionAnswers(3)

yourAnswerToTheQuestion