powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор запросов
4 сообщений из 4, страница 1 из 1
Оптимизатор запросов
    #32031336
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимизатор запросов
6.5.
Если я правильно понимаю, то кластерный индекс автоматически поддерживает возрастающий порядок сортироввки возращаемых строк по столбцу, для которого он был создан. Всегда ли можно получить строки отсортированные по этому индексу без использования ORDER BY field_name?

Отрывок из книги меня сбивает с толку:

"Например, если в таблице существуют два индекса - один клстерный, а другой некластерный, оптимизатор запроса может выбрать для выборки строк таблицы некластерный индекс. В этом случае в инструкцию SELECT можно включить предложение с режимами оптимизатора, которое заставит оптимизатор использовать кластерный индекс."

Получается, что ORDER BY field_name нужно использовать всегда?
...
Рейтинг: 0 / 0
Оптимизатор запросов
    #32031343
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использование индексов выбирается оптимизатором не только для сортировки, а для оптимизации выполнения запроса (обьединения, группировки и т.д.). В книге имеется ввиду, что оптимизатор будет пытатся составить оптимальный план для запроса, используя существующие индексы, или даже возможно не используя их, по многим критериям выбирая, какие индексы наиболее быстро позволят быстрее выполнить запрос. Однако вы сами можете указать оптимизатору, чтобы он использовал для выполнения запроса конкретные индексы, но это не гарантирует, что ваш предложенный план окажется эффективнее, чем план, предложенный оптимизатором. Для этой цели и существует просмотр плана, в котором будет легко понять, какой план лучше и где узкие места, которые неплохо бы соптимизировать. Оптимизатор в 6.5 конечно не так эффективен, чем в 2000, но прежде чем начинать играться в навязывание ему индексов неплохо бы попытаться для начала поиграться с самим запросом, написав его несколько версий, плюс проверить эффективность существующих индексов. А насчет ORDER BY вывод абсолютно очевиден - нет гарантии, что порядок сортировки всегда будет по кластерному ключу по умолчанию - если в SELECT нет ORDER BY, то записи будут возвращены как угодно, и их порядок будет зависеть от плана запроса. Так что если и хотите получать гарантированно отсортированный результат - ставьте ORDER BY всегда
...
Рейтинг: 0 / 0
Оптимизатор запросов
    #32031346
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 ASCRUS

Не сочтите за труд, ответье еще раз.

Правильны ли мои выводы:

Если оптимизатор выбирает записи из таблицы с помощью кластерного индекса, то они будут отсортированы по кластерному индексу в любом случае (даже если я не использую ORDER BY). То же самое произойдет если я сам "заставлю" оптимизатор выбирать записи по кластерному индексу. В любом другом случае надо использовть ORDER BY.
...
Рейтинг: 0 / 0
Оптимизатор запросов
    #32031361
Osya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вывод неправильный.

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


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