2017-02-17 3 views
2

Anstelle von Funktion in der WHERE-Klausel können wir etwas anderes tun.SQL-Optimierung Where-Klausel

DateAdd die Zeit nehmen, eine schlechte Leistung Ich denke ..

Wie diese SQL-Optimierung

SELECT cust_id, order_date, price 
FROM customers 
WHERE DATEADD(DD,50,order_date)>=GETDATE() 

Antwort

7

nicht Ihre Funktion auf order_date laufen Sie, die inverse auf getdate() statt

select cust_id, order_date, price 
from customers 
where order_date>=dateadd(Day,-50,getdate()) 
laufen

Funktionsaufrufe auf order_date werden einen Index Scan verursachen, wenn Sie stattdessen Ihre Funktion auf dem FilterkriteriumausführenSie können eine Indexsuche für diese Spalte beibehalten. (Wenn es einen Index hat).

SARGable functions in SQL Server - Rob Farley

+0

Ist es besser so, Leistung weise ?? – user1810575

+3

Ja, wenn Sie einen Index für die Spalte order_date erstellen. – Murthy

+0

wobei order_date <= dateadd (Tag, -50, getdate()) oder wo order_date> = dateadd (Tag, -50, getdate()) – user1810575