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

Re: Как поменять местами строки в таблице?

Добавлено: 24 мар 2009, 15:48
AiK
&quot писал(а):два одинаковых SELECT'a могут дать result set, в которых порядок следования строк разный.
Не будет такого :) Строки будут выдаваться в порядке их физического расположения в таблице. Но вот серия последовательных Insert'ов не гарантирует того, что физически записи в таблице будут располагаться в той же последовательности.

Re: Как поменять местами строки в таблице?

Добавлено: 24 мар 2009, 16:24
alexander.spb
а физические расположение вполне может измениться в результате, например, сборки мусора в database.

Re: Как поменять местами строки в таблице?

Добавлено: 03 апр 2009, 11:46
Laba
AiK писал(а):Не будет такого :) Строки будут выдаваться в порядке их физического расположения в таблице. Но вот серия последовательных Insert'ов не гарантирует того, что физически записи в таблице будут располагаться в той же последовательности.
Один_и_тот_же! select без order by может возвращает разный record set. Это закон. :)

Частный случай, что строки в наборе упорядочены по _физическому_расположению_ Считать так плохая практика.

Большинство современных субд имеют кэш для блоков с данными. Кроме того они ориентированы на одновременную работу с несколькими пользователями. И вопросы оптимизации производительности не покидают головы разработчиков и админов. :p

Ситуация когда два сеанса работают с одним и тем же набором данных идеальна для кеширования.

Надеюсь понятно, что есть случаи когда по запросу select без order by впервую очередь выдаются записи из кешированного блока, а затем из только что прочитанного.

Но! тут же делаем этот запрос второй раз и... порядок меняется, блоки ведь уже кешированы в памяти. Но! может быть в этот интервал второй пользователь уже вытолкнул наши блоки из кеша.... Да хрен его разберет.

О каком порядке по _физическому_расположению_ идет речь?

Re: Как поменять местами строки в таблице?

Добавлено: 04 апр 2009, 00:57
AiK
&quot писал(а):О каком порядке по _физическому_расположению_ идет речь?
молодой человек, Вы что-нибуть слышали о кластерных индексах?

Re: Как поменять местами строки в таблице?

Добавлено: 05 апр 2009, 09:49
Laba
AiK писал(а):молодой человек, Вы что-нибуть слышали о кластерных индексах?
Да. Слышал.

Re: Как поменять местами строки в таблице?

Добавлено: 24 июл 2009, 19:25
ustas
если нужно разово все упорядочить, то делается так:

1. create table temporary as select * from исходная таблица
2. truncate table где упорядочиваем
3. инсертим записи в нужном порядке в усеченную таблицу
4. drop table temporary

это самый тру способ :)