powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по индексам
8 сообщений из 8, страница 1 из 1
Вопрос по индексам
    #39841587
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, нет возможности проверить, подскажите, пожалуйста, при использовании составного индекса, например из 3 полей, когда идёт запрос по 2 из 3 этих полей, будет ли подхватывается индекс?
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841591
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A., на все воля оптимизатора...
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841593
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, понимаю. Но в общем случае - получу index scan ?
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841599
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.buser, понимаю. Но в общем случае - получу index scan ?
В "общем случае" вы получите что угодно от сика по индексу до таблескана :)
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841611
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

если эти 2 поля - первые в индексе и выбираемый объем достаточно мал по сравнению со всей таблицей
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841622
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То будет index scan?КритикMichail A.,

если эти 2 поля - первые в индексе и выбираемый объем достаточно мал по сравнению со всей таблицей
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39841623
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

в большинстве случаев это зависит от предиката запроса и сатистики распределения данных таблицы:

таблица из 4 полей с составным индексом по a,b
Код: sql
1.
create table tbl (a int, b, int, c int, d int, index ix (a, b))




для запроса:
Код: sql
1.
select a, c from tbl where a = 1


-будет индексный поиск + уточнение rid-lookup за колонкой "с" (при относительно малом объеме строк удовлетворяющим предикату "a"=1)

Код: sql
1.
select a, c, from tbl where b = 2


будет скаринрование таблицы, потому что первой ключевой колонки в предикате нет


для запроса
Код: sql
1.
select a from tbl where a > 0 and b = 5 

--будет план будет выбираться на основе селективности полей a и b.


поэтому формулировка "например из 3 полей, когда идёт запрос по 2 из 3 этих полей," несколько неверна потому что вы не уточняете где у вас в запросе присутствуют эти поля, в предикате или в селекте.

так же большую роль играют операторы самого предиката, то есть какая ключевая колонка индекса как в предикате используется:
может быть сравнение на равенство, а может быть на неравеснство. обычно для предикатов на равенство выбирается seek на неравенство scan, но это очень приблизительно, здесь нельзя одназначно утверждать то или иное.
...
Рейтинг: 0 / 0
Вопрос по индексам
    #39842125
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.,

Порядок полей в индексе имеет значение.
Представьте себе у вас бумажный телефонный справочник где все номера осортированны по имени, потом по отчеству, а потом по фамилии, а теперь вам нужно найти Пупкина Ивановича. Вот если сможете этим справочником воспользоваться то и сервер сможет индексы использовать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по индексам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]