sql >> Database >  >> RDS >> Sqlserver

Is er een prestatieprobleem tijdens het gebruik van ISNULL() in SQL Server?

ISNULL() in de select-clausule heeft een verwaarloosbare invloed op de prestaties. In de waar-clausule daarentegen kan het een zeer grote impact hebben op de prestaties, omdat het de optimizer verhindert een index op die kolom te gebruiken.

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.

Dus, wanneer u isnull() gebruikt in een waar-clausule, evalueer dan of het verhindert dat de query-optimizer een index gebruikt. Als dat zo is, overweeg dan om een ​​berekende kolom te maken met het resultaat if isnull(col1, 0) en indexeer de berekende kolom en gebruik deze in uw waar-clausule.



  1. De ANSI_NULLS-instelling van een database vinden in SQL Server (T-SQL)

  2. Schema-sortering instellen in MySQL voor Japans

  3. SQL:rij invoegen voor ontbrekende maand(en)

  4. probleem met Add_month in oracle, ik moet een factureringscyclus genereren