Страница 2 из 2
Re: Как поменять местами строки в таблице?
Добавлено: 24 мар 2009, 15:48
AiK
" писал(а):два одинаковых 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. Это закон.
Частный случай, что строки в наборе упорядочены по _физическому_расположению_ Считать так плохая практика.
Большинство современных субд имеют кэш для блоков с данными. Кроме того они ориентированы на одновременную работу с несколькими пользователями. И вопросы оптимизации производительности не покидают головы разработчиков и админов.
Ситуация когда два сеанса работают с одним и тем же набором данных идеальна для кеширования.
Надеюсь понятно, что есть случаи когда по запросу select без order by впервую очередь выдаются записи из кешированного блока, а затем из только что прочитанного.
Но! тут же делаем этот запрос второй раз и... порядок меняется, блоки ведь уже кешированы в памяти. Но! может быть в этот интервал второй пользователь уже вытолкнул наши блоки из кеша.... Да хрен его разберет.
О каком порядке по _физическому_расположению_ идет речь?
Re: Как поменять местами строки в таблице?
Добавлено: 04 апр 2009, 00:57
AiK
" писал(а):О каком порядке по _физическому_расположению_ идет речь?
молодой человек, Вы что-нибуть слышали о кластерных индексах?
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
это самый тру способ
