Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 insert into select order by  [new]
chajnik_polnyj
Guest
подскажите чайнику, впервые увидевшему конструкцию типа:

insert into t1
select
...
order by 1 asc

create clustered index ... WITH SORT_IN_TEMPDB OFF


это имеет смысл так делать?
мне почему-то стало нехорошо при виде сортировки для инсерта,
но честно признаюсь, что и вижу впервые WITH SORT_IN_TEMPDB OFF.
может ето так задумано типа вот отсортируем и так вставим,
и тогда при построении индекса и сортировать ничего не надо?
4 ноя 11, 01:52    [11550068]     Ответить | Цитировать Сообщить модератору
 Re: insert into select order by  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
chajnik_polnyj
это имеет смысл так делать?
Если есть identity, то, вроде, имеет.
4 ноя 11, 09:56    [11550278]     Ответить | Цитировать Сообщить модератору
 Re: insert into select order by  [new]
Glory
Member

Откуда:
Сообщений: 104751
chajnik_polnyj
и тогда при построении индекса и сортировать ничего не надо?

"Сортировать" все равно надо. Потому что куча и кластерный индекс есть разные по структуре вещи
Куча - это длинный список, где каждая страница указывает на следующую
А индекс - это дерево
Поэтому, глядя на кучу, вы в принципе не можете сказать, расположены ли там данные в каком то порядке или нет
4 ноя 11, 10:30    [11550315]     Ответить | Цитировать Сообщить модератору
 Re: insert into select order by  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Glory
Поэтому, глядя на кучу, вы в принципе не можете сказать, расположены ли там данные в каком то порядке или нет
Оно то да, но... порядок в некот. куче должен зависеть от некот. ключа, а не от порядка вставки в таблицу.

Единственный случай - вставка в таблицу с идентити. Тогда получим соответствие порядка вставки и последующего чтения (по индентити).
4 ноя 11, 11:24    [11550408]     Ответить | Цитировать Сообщить модератору
 Re: insert into select order by  [new]
Glory
Member

Откуда:
Сообщений: 104751
LSV
Единственный случай - вставка в таблицу с идентити. Тогда получим соответствие порядка вставки и последующего чтения (по индентити).

Только вот серверу, я думаю, при построении кластерного индекса будет это неинтересно.
Потому, как он не знает каким запросом была заполнена таблица.
А наличие поля identity само по себе не гарантирует какого то порядка в куче.
4 ноя 11, 11:41    [11550444]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить