2017-02-17 20 views
2

Вместо использования функции в предложении where мы можем сделать что-то другое.SQL Optimization where where

DateAdd принимая время плохой работы, я думаю ..

Как оптимизировать этот SQL

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

ответ

7

Не запускайте вашу функцию на order_date, запустить обратный на getdate() вместо

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

Функциональные вызовы на order_date будут вызывать сканирование индекса, если вместо этого вы выполняете свою функцию по критериям фильтра getdate() вы можете сохранить поиск индекса в этом столбце. (Если у него есть индекс).

SARGable functions in SQL Server - Rob Farley

+0

Является ли это лучше, что путь, производительность мудрый ?? – user1810575

+3

Да, если вы создадите индекс в столбце order_date. – Murthy

+0

, где order_date <= dateadd (День, -50, getdate()) или где order_date> = dateadd (День, -50, getdate()) – user1810575

 Смежные вопросы

  • Нет связанных вопросов^_^