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

Откуда:
Сообщений: 33
Все добрый вечер

Хотел бы задать вопрос:
Есть таблица Order с полями ID,OrderID, CustomerID (остальные перечислять нет смысла)
Есть кластерный индекс на ID
Есть сложный (или составной ) индекс на полях OrderID,CustomerID порядок полей именно такой

Во многих книгах и статьях упоминается, что если в условии запроса порядок полей будет нарушен, то поиск по индексу использоваться не будет и будет произведено сканирование индекса. Так ли это?
Воспроизвести у себя не смог, если указывать OrderID CustomerID -Seek и CustomerId OrderId -Seek

Вопросы использования всех полей индекса в условии where или частичного использования слева направо "по-элементно" понятны, их не рассматриваем.
10 май 16, 23:35    [19155813]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31429
sqldbmail
Во многих книгах и статьях упоминается, что если в условии запроса порядок полей будет нарушен, то поиск по индексу использоваться не будет и будет произведено сканирование индекса. Так ли это?
Нет.
Вот если в условии запроса будет использоваться часть полей, то чтобы индекс использовался, эта "часть" должна быть из начала списка полей индекса.
Наверное, вы перепутали именно с таким случаем, потому что я сомневаюсь, что есть такие непрофессиональные книги, где говорится о порядке полей в условии запроса.
11 май 16, 01:35    [19155936]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка  [new]
sqldbmail
Member

Откуда:
Сообщений: 33
alexeyvg,
Понял, спасибо.
11 май 16, 06:48    [19156052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить