2010-08-16 5 views
1

У меня есть вид индекса, который я выполнение запроса против сдата варьируется в разделе, где индексных

WHERE GETDATE() BETWEEN start_date AND end_date 

в пункте WHERE.

Я подозреваю, что ответ на мой вопрос, вероятно, будет отрицательным, но можно ли это нажать на индексный указатель или сделать что-то умное, чтобы добиться такого же эффекта?

Меня беспокоит то, что индексный указатель будет использовать от GETDATE(), будет, когда создается индексный указатель, что не то, что я хочу. Я всегда хочу, чтобы это была текущая дата и время. Кроме того, я использую SQL Server 2008.

ответ

1

Вы не сможете сделать это в индексированном виде.

Подумайте, как SQL Server должен будет реализовать это. Каждые 3 мс (или, как правило, значение GETDATE() может измениться), SQL Server должен был бы переоценить необходимость добавления новых строк в представление или любые существующие строки должны быть удалены.

Сравните это с обычными примерами и ограничениями использования индексированных представлений, где, как мы надеемся, очевидно, что SQL-сервер может принимать решения о включении/исключении в соответствующие инструкции INSERT/UPDATE для базовых таблиц.

+0

Спасибо за ответ, для моих требований я мог бы вымыть решение, которое использует сохраненную proc, выполняемую как задание агента, которое выполняется каждые пару секунд. Для того, что я делаю, это отставание было бы вполне приемлемым. – Chris

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