Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 убыстрить время выполнения запроса  [new]
_ч_
Member

Откуда:
Сообщений: 1424
Есть таблица вида:
DECLARE @t TABLE (ID INT IDENTITY, [Date] DATETIME, temp1 NVARCHAR(200), temp2 NVARCHAR(200))

В которой есть ID - Identity, поле [Date] - дата и множество других полей (temp1, 2 и т.д.)

Во многих запросах используется условие:

WHERE [Date] BETWEEN ...

Можно ли как-нибудь убыстрить работу таких вот запросов (например с помощью индексов)?
Если да, то как?
6 окт 09, 14:42    [7748339]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Покрывающий индекс
6 окт 09, 14:44    [7748359]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Кластерный индекс по [Date].
6 окт 09, 14:44    [7748360]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
Abbey Road
Member

Откуда:
Сообщений: 26
_ч_
WHERE [Date] BETWEEN ...

Для начала
where [Date] >= @dateFrom and [Date] <= @dateTill
6 окт 09, 14:48    [7748400]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Abbey Road
_ч_
WHERE [Date] BETWEEN ...

Для начала
where [Date] >= @dateFrom and [Date] <= @dateTill

и в чём разница? оптимизатор сам интерпритирует between в эту конструкцию
6 окт 09, 14:50    [7748411]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
_ч_
Member

Откуда:
Сообщений: 1424
Knyazev Alexey, что такое "покрывающий" индекс? никогда не слышал о таком
6 окт 09, 14:53    [7748423]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
Abbey Road
Member

Откуда:
Сообщений: 26
Knyazev Alexey,

Опыт показывает, что это имеет значение (в свое время опытный товарищ подсказал, потом ради интереса специально тестировал) Кстати порядок предикатов в where как оказалось тоже имеет значение
6 окт 09, 14:54    [7748431]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Интересно, а версия сервера какая?
Хранится ли ненулевое время в [Date]?
6 окт 09, 14:56    [7748443]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
_ч_
Knyazev Alexey, что такое "покрывающий" индекс? никогда не слышал о таком
Покрывающий индекс включает в себя все поля, использующиеся в запросе.
6 окт 09, 14:57    [7748453]     Ответить | Цитировать Сообщить модератору
 Re: убыстрить время выполнения запроса  [new]
_ч_
Member

Откуда:
Сообщений: 1424
iap
Интересно, а версия сервера какая?
Хранится ли ненулевое время в [Date]?


Microsoft SQL Server 2005 - 9.00.3054.00
Нулевое время не хранится, поле всегда заполнено (исходя из особенности предметной обл. запись может сществовать только если имеет опр. дату)
6 окт 09, 15:05    [7748508]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить