ISNULL() nella clausola select ha un'influenza trascurabile sulle prestazioni. Nella clausola where, invece, può avere un impatto enorme sulle prestazioni, poiché impedisce all'ottimizzatore di utilizzare un indice su quella colonna.
where isnull(col1, 0) = 0 -- unable to use index, because every
-- row has to be evaluated
where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0)
-- returns the same static value for every row and
-- not every row has to be evaluated by the function.
Così, quando si utilizza IsNull() in una clausola where, valutare se impedisce l'ottimizzazione delle query di utilizzando un indice. In tal caso, prendere in considerazione la creazione di una colonna calcolata con il risultato se isnull (col1, 0) e indicizzare la colonna calcolata e utilizzarla nella clausola where.
fonte
2012-01-19 12:09:49
Non puoi testare e vedere? –
Dipende da molte cose, come sempre. Come lo usi, dove lo usi, quale sia la tua domanda. Ulteriori dettagli potrebbero aiutare. – Paddy
@SergioTulentsev Sto lavorando a un progetto di miglioramento. Quindi abbiamo aggiunto alcuni nuovi colomns a tbls. Quello sarà Nullo. I dati disponibili per lo sviluppo sono pochi. Il database di produzione è molto grande. Non posso accedervi. – kbvishnu