SQL-Server: Dynamische where-Klausel

Problem:

Ajax suggest-Suche auf [n] Zutaten in den Rezepten. Das heißt: match Rezepte gegen mehrere Zutaten.

Zum Beispiel: SELECT Recipes using "flower", "salt" produzieren würde: "Pizza", "Bread", "Saltwater" und so weiter.

Tabellen:

Ingredients [
    IngredientsID INT [PK],
    IngredientsName VARCHAR
]

Recipes [
    RecipesID INT [PK],
    RecipesName VARCHAR
]

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

- Abfrage:

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

Ich bin derzeit am Bau meine Abfrage mit ASP.NET C# aufgrund der dynamischen Natur des WHERE - Klausel.

Ich Bisse, die ich zum erstellen der Abfrage in meinem code-Ebene anstelle der Verwendung einer gespeicherten Prozedur/Reine SQL -, die in der Theorie sollte viel schneller sein.

Haben Sie Jungs haben keine Gedanken darüber, wie ich würde zu bewegen alle Logik aus meinem code-Ebene zu reinem SQL, oder zumindest, wie kann ich optimieren der Leistung von dem, was ich mache?

Ich denke entlang der Linien von temporären Tabellen:

Schritt eins: SELECT IngredientsID FROM Ingredients und INSERT INTO temp-table

Schritt zwei: SELECT RecipesName FROM Recipes trat mit IngredientsRecipes trat mit temp-table.IngredientsID

InformationsquelleAutor cllpse | 2008-09-27
Schreibe einen Kommentar