sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2008 – podmíněný dotaz

nejlepší zdroj pro podmínky dynamického vyhledávání:

Podmínky dynamického vyhledávání v T-SQL od Erlanda Sommarskoga

existuje mnoho jemných důsledků toho, jak to uděláte, pokud jde o to, zda lze index použít nebo ne. Pokud používáte správnou verzi SQL Server 2008, stačí přidat OPTION (RECOMPILE) na dotaz a pro optimalizace se použije hodnota lokální proměnné za běhu.

Zvažte toto, OPTION (RECOMPILE) převezme tento kód (kde nelze použít žádný index s touto změtí OR s):

WHERE
    (@search1 IS NULL or [email protected])
    AND (@search2 IS NULL or [email protected])
    AND (@search3 IS NULL or [email protected])

a optimalizovat jej za běhu tak, aby byl (za předpokladu, že byl předán pouze @Search2 s hodnotou):

WHERE
    [email protected]

a lze použít index (pokud ho máte definovaný ve sloupci 2)



  1. Převod Long na Varchar2

  2. Dotaz MySQL trvá déle než 6 sekund

  3. vypočítat součet času typu pomocí sql

  4. V dotazu CONNECT-BY se nezískává násobení celé řady (součin).