sql >> Databasteknik >  >> RDS >> Sqlserver

Finns det något prestandaproblem när du använder ISNULL() i SQL Server?

ISNULL() i select-klausulen har försumbar inverkan på prestandan. I where-satsen å andra sidan kan det ha en mycket stor inverkan på prestandan, eftersom det hindrar optimeraren för att använda ett index på den kolumnen.

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.

Så när du använder isnull() i en where-klausul, utvärdera om det förhindrar frågeoptimeraren från att använda ett index. Om så är fallet, överväg att skapa en beräknad kolumn med resultatet if isnull(col1, 0) och indexera den beräknade kolumnen och använd den i din where-klausul.



  1. Hämtar data från MYSQL baserat på veckonummer

  2. Hur kan jag hitta ett av många möjliga mönster bland en enda mySQL-post? Mer inuti

  3. Spara data till PHP / Mysql med inline-redigering i CKEditor

  4. Installera Orafce.sql 3.0 i Windows 7