SQL 2008. Som spustený sproc z SQL Studio a keď sa snažím získať Skutočné spustenie plánu to fúka do tempdb.
Zúžil som problém, aby som zavolal na riadkovú skalárnu funkciu, ktorá sa používa v tabuľke riadkov 700K.
Vyvodil som, že SQL sa snaží vytvoriť 700K exec plány pre túto funkciu a zapíše všetky dáta do tempdb, ktorý má 3Gb voľného miesta.
I dont naozaj potrebné vidieť plán pre túto funkciu.
Môžem explicitne vylúčiť vyhlásenie z generovania plánu exec?
odpovede:
3 pre odpoveď č. 1Môžete ho vylúčiť z plánu vykonávania, okrem odstránenia hovoru z dotazu.
Znie to však ako hlavný kandidát na prepnutie zo skalárneho UDF na inline tabuľku UDF. Skalárne UDF môžu byť veľkou príčinou zlého výkonu, ktorý sa má spustiť raz za riadok v dotaze.
Prečítajte si tento článok ktorý obsahuje príklad na preukázanie.