Existuje několik možných vysvětlení, proč se toto chování zobrazuje. Některé běžné jsou
- Poddotaz nebo CTE mohou být opakovaně přehodnocovány.
- Materializace dílčích výsledků do
#temp
tabulka může vynutit optimálnější pořadí spojení pro tuto část plánu odstraněním některých možných možností z rovnice. - Materializace dílčích výsledků do
#temp
tabulka může zlepšit zbytek plánu opravou špatných odhadů mohutnosti.
Nejspolehlivější metodou je jednoduše použít #temp
stůl a zhmotněte ho sami.
V opačném případě, pokud jde o bod 1, viz Poskytnout nápovědu k vynucení střední materializace CTE nebo odvozených tabulek
. Použití TOP(large_number) ... ORDER BY
může často povzbudit výsledek k tomu, aby byl zařazován do fronty, než aby byl opakovaně přehodnocen.
I když to funguje, na cívce nejsou žádné statistiky.
U bodů 2 a 3 byste museli analyzovat, proč jste nezískali požadovaný plán. Případné přepsání dotazu tak, aby používal proměnlivé predikáty, nebo aktualizace statistiky může získat lepší plán. Pokud se vám to nepodaří, můžete zkusit získat požadovaný plán pomocí tipů dotazů.