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

Er der problemer med ydeevnen, mens du bruger ISNULL() i SQL Server?

ISNULL() i select-klausulen har ubetydelig indflydelse på ydeevnen. I where-klausulen kan det på den anden side have en meget stor indflydelse på ydeevnen, da det forhindrer optimizeren i at bruge et indeks på den kolonne.

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 bruger isnull() i en where-klausul, skal du evaluere, om det forhindrer forespørgselsoptimeringsværktøjet i at bruge et indeks. Hvis ja, overvej at oprette en beregnet kolonne med resultatet if isnull(col1, 0) og indekser den beregnede kolonne og brug den i din where-klausul.



  1. Brug PostgreSQL SSL-forbindelse i rust med selvsignerede certifikater

  2. Sådan indstilles miljøvariabler til Laravel 5 på AWS EC2 med MySQL

  3. 2008 R2-fejlrettelsen, der bryder RCSI

  4. Funktioner med variabelt antal inputparametre