Оптимизация DATEDIFF - PullRequest
       4

Оптимизация DATEDIFF

2 голосов
/ 01 декабря 2009

Я просто хочу проверить свою логику там.

Предположим, я хочу найти все новые продукты за последние 30 дней. Моя текущая процедура такова:

SELECT ProductName
FROM ProductTable
WHERE DATEDIFF( d, CreateDate, GETDATE() ) < 30 

Однако я понимаю, что такие функции, как DATEDIFF, не будут использовать некластеризованный индекс, который я создал на CreateDate. Поэтому мой запрос будет выполняться быстрее, используя следующую процедуру:

SELECT ProductName
FROM ProductTable
WHERE CreateDate >= DATEADD( d, -30, GETDATE() ) AND CreateDate < GETDATE() 

Кстати, у меня нет SQL Server, где я нахожусь, поэтому я не могу проверить это с помощью плана выполнения.

1 Ответ

1 голос
/ 01 декабря 2009

Да, вы правы, второй запрос будет быстрее, поскольку он может использовать любые доступные индексы на CreateDate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...