Sargable - Sargable
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
v relační databáze, říká se, že podmínka (nebo predikát) v dotazu je sargable pokud DBMS motor může využívat výhod index k urychlení provedení dotazu. Termín je odvozen od kontrakce Hledat ARGument ABLE.
Selhání sargovatelného dotazu je známé jako nesargovatelný dotaz a obvykle má negativní vliv na čas dotazu, takže jeden z kroků v optimalizace dotazu je převést je na sargable. Efekt je podobný hledání konkrétního výrazu v knize, která nemá žádný index, počínaje pokaždé od první stránky, namísto přeskakování na seznam konkrétních stránek identifikovaných v indexu.
Typická situace, která způsobí a SQL dotaz non-sargable je zahrnout do klauzule WHERE funkci fungující na hodnotě sloupce. Klauzule WHERE není jediná klauzule, kde na sargability může záležet; může mít také vliv na klauzule ORDER BY, GROUP BY a HAVING. Klauzule SELECT na druhé straně může obsahovat nezaručitelné výrazy, aniž by to nepříznivě ovlivnilo výkon.
- Sargovatelní operátoři:
=, >, <, >=, <=, MEZI, JAKO, JE [NE] NULA
- Sargovatelní operátoři které zřídka zlepšují výkon:
<>, V, NEBO, NE V, NE JAKO
Jednoduchý příklad
KDE
klauzule, které jsou sargovatelné, mají obvykle hodnoty pole na levé straně operátoru a skalární hodnoty nebo výrazy na pravé straně operátoru.
Není sargable:
VYBRAT*ZmyTableKDE11.7<SQRT(myIntField)
To není sargable, protože myIntField je vložen do funkce. Pokud byly na myIntField k dispozici nějaké indexy, nemohly být použity. Navíc, SQRT()
bude vyvolán u každého záznamu v myTable.
Sargovatelná verze:
VYBRAT*ZmyTableKDEmyIntField>11.7*11.7
To je sargable, protože myIntField NENÍ obsažen ve funkci, takže všechny dostupné indexy na myIntField jsou potenciálně použitelné. Dále je výraz vyhodnocen pouze jednou, nikoli pro každý záznam v tabulce.
Viz také
Reference
- Ladění výkonu SQL Peter Gulutzan, Trudy Pelzer (Addison Wesley, 2002) ISBN 0-201-79169-2 (Kapitola 2, Jednoduché „vyhledávání“ )
- Microsoft SQL Server 2012 Internals autor: Kalen Delaney, Connor Cunningham, Jonathan Kehayias, Benjamin Nevarez, Paul S. Randal (O'Reily, 2013) ISBN 978-0-7356-5856-1 (Kapitola 11, Optimalizátor dotazů)