Какие ситуации могут привести к выбору, чтобы вернуть другой заказ - PullRequest
1 голос
/ 15 февраля 2011

Что может заставить SQL Server 2005 возвращать результаты SELECT в другом порядке.

Примечание : я не знаю, имеет ли это значение, но запрос имеетOrder by предложение для неуникального столбца (столбец Дата должен быть конкретным), а таблица является временной таблицей.

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

Я хочу знать, что это за «что-то» может произойти.

Спасибо.

Ответы [ 4 ]

1 голос
/ 15 февраля 2011

Если в столбце ORDER BY есть повторяющиеся значения, порядок этих значений не определен.Порядок - это то, что база данных находит наиболее удобным, и он может измениться в любое время и по любой причине.

0 голосов
/ 15 февраля 2011

Вы сказали

Я знаю, что заказ не гарантировано, если я не укажу это, но это обычно соответствует до чего-то случается.

Я думаю, ты хотел сказать

Я знаю, что заказ не гарантировано, если я не укажу это, так это всегда ненадежно, независимо от того, как соответствует выглядит.

Все, что влияет на решения оптимизатора запросов относительно плана выполнения, может изменить порядок неупорядоченных строк.

0 голосов
/ 15 февраля 2011

Если говорить прямо, не имеет значения, почему это должно измениться, если это когда-либо произойдет.

Механизм запросов специально документирует , что заказ не указан , если вы его не указали.

Как всегда, общий совет по недокументированному поведению: не делайте этого !

Причины, по которым это может измениться (несомненно, есть и другие, но зачем испытывать удачу?):

  • Перекомпиляция запроса
  • Обновляются устаревшие индексы
  • На сервере запущено обслуживание, восстановление индексов
0 голосов
/ 15 февраля 2011

Если упорядочено по неуникальному столбцу, то после гарантированного упорядочения этого столбца порядок строк в данной группе не гарантируется - как сказано в awm, он остается в базе данных.Вставка может изменить порядок, объединения могут изменить порядок, обновление может потенциально изменить порядок.

Если вы хотите заказать гарантированно, укажите в вашем order by набор столбцов, который будет гарантировать порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...