Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cosa sta facendo l'esecuzione di query a questa query in SQL Server 2005?

Il tuo codice sta facendo ipotesi non valide. In un linguaggio dichiarativo orientato agli insiemi come SQL l'esecuzione è libera di scegliere qualsiasi piano di esecuzione ritenga opportuno. Ciò che ritieni inefficiente è molto probabilmente un'ottimizzazione valida in cui il titolo viene proiettato prima da un indice che soddisfa i predicati su lastmodified o qualcosa di simile. Non puoi fare alcuna ipotesi sull'ordine di esecuzione e quindi non puoi avere nell'elenco di proiezione espressioni come SUBSTRING (..,9,..) che bombarderanno determinate righe.

Un altro esempio di problemi che derivano da un presupposto non valido simile sono Cortocircuito dell'operatore booleano di SQL Server bug di valutazione.