Страница 1 из 1

join в MS SQL Server 7

Добавлено: 16 дек 2004, 11:31
Burzum
Сотрудник склепал запрос (точно воспроизвести не смогу) вида
select *
from table1
left join table2 on ...
left join table3 on ...
left join table4 on ...

Все объединилось и САМО отсортировалось, хотя order by никто не писал и после on поле не упоминалось.
Как это можно объяснить?

Re: join в MS SQL Server 7

Добавлено: 16 дек 2004, 12:05
Merlin
Burzum писал(а):Сотрудник склепал запрос (точно воспроизвести не смогу) вида
select *
from table1
left join table2 on ...
left join table3 on ...
left join table4 on ...

Все объединилось и САМО отсортировалось, хотя order by никто не писал и после on поле не упоминалось.
Как это можно объяснить?
Ежели мартышку посадить за пишущую машинку, то за 100 мульёнов лет у неё есть хорошие шансы случайно напечатать "Евгения Онегина". Так сложились циклы работы оптимизатора и расположение записей на страницах слабофрагментированной базы.

Re: join в MS SQL Server 7

Добавлено: 16 дек 2004, 13:24
Burzum
Merlin писал(а): Ежели мартышку посадить за пишущую машинку, то за 100 мульёнов лет у неё есть хорошие шансы случайно напечатать "Евгения Онегина". Так сложились циклы работы оптимизатора и расположение записей на страницах слабофрагментированной базы.
Это не совпадение. Вывод: Билл Гейтс - матрышка?

Добавлено: 16 дек 2004, 13:53
dimitr
По чему хоть отсортировалось? Всем полям выборки? Тут часом кластерные индексы не повлияли?

Добавлено: 16 дек 2004, 14:39
Burzum
dimitr писал(а):По чему хоть отсортировалось? Всем полям выборки? Тут часом кластерные индексы не повлияли?
Только по одному полю (Фимилия имя отчество) из Table2, по нему есть индекс.

Добавлено: 16 дек 2004, 16:24
dimitr
Если не было группировки/сортировки, то см. пост Merlin'а ;-)

Добавлено: 17 дек 2004, 07:49
fraks
Если не указывать ЯВНО order by то сервер ничего не гарантирует. Он может выдавать данные стабильно в отсортированном виде но закладываться на это нельзя т.к. это просто особенности текущей реализации и никто никому не будет должен если в следующей версии этот порядок изменится.

Нет order by - нет и гарантии упорядочения.
[/b]