Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
сортировка
|
|||
|---|---|---|---|
|
#18+
ребят, почему при изменении строки (UPDATE ...) в таблице, эта строка меняет свое местоположение? мож я че в настройках не сделал? заранее спасибо.не судите за глупый вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 21:19 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
Это так называемая "мультиверсионность" (MVCC (multi-version concurency control)) когда в рамках начатой транзакции по UPDATE физически создаться новая строка в таблице, в которой производятся изменения и, которая видна только в рамках этой тразакции. Старый же вариант доступен другим транзакциям пока работает ваша по UPDATE. Как только ваша транзакция успешно завершаться старая запись помечается "на удаление". новым транзакциям становиться видна новая запись которая физически расположена в конце таблицы (обычно). поэтому когда вы делаете select * from table без прямого указания порядка сортировки запрос вернёт вам строки в том порядке в котором они расположены на диске. Что бы строки не "убегали в конец и находились на нужных местах" нужно: 1. создать serial поле по таблице (скажем "id") и назначить его как primary key индекс 2. использовать order by id в селектах. 3. использовать order by [название нужного поля] если сортировка нужна определенная 4. использовать возможности VACUUM для удаления ненужных записей 5. читать теоретический материал на предмет организации версонности sql баз данных: http://www.citforum.ru/database/articles/multiversion/ http://oraclemind.blogspot.com/2007/08/blog-post.html http://www.ibase.ru/devinfo/mga.htm (только для ознакомления на примере firebird, не брать за основную концепцию postgresql) Успехов в начинании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 22:12 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
ivanmara 3. использовать order by [название нужного поля] если сортировка нужна определенная ...я так и делал (сортировал по id). Просто думал может че настроить надо при администрировании базы , чтоб не сортировать каждый раз (как то мне это неграмотным показалось). СПАСИБО за исчерпывающий ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 23:00 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
ivanmara, вы куда-то не туда углубились :) в sql порядок выдачи строк в результате не определён (если он не задан явно при помощи order by). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 23:02 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
ivanmara 1. создать serial поле по таблице (скажем "id") и назначить его как primary key индекс 3. использовать order by [название нужного поля] если сортировка нужна определенная и посоветуйте пожалуйста какой из этих вариантов более предпочтительней для моего случая:мне нужно просто чтоб всегда был правильный порядок по id и все, строк в таблице > 1 млн.(если это важно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 23:06 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
LexaF пишет: > ребят, почему при изменении строки (UPDATE ...) в таблице, эта строка > меняет свое местоположение? мож я че в настройках не сделал? в таблице нет местоположения строк. Поэтому и меняться нечему. Ты просто один раз выводишь данные, строка появляется в одном месте, другой - в другом. Это - можно сказать случайный процесс. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 23:07 |
|
||
|
сортировка
|
|||
|---|---|---|---|
|
#18+
ivanmara пишет: > Это так называемая "мультиверсионность" (MVCC (multi-version concurency > control)) MVCC тут абсолютно ни при чём. В таблице порядок запирей не определяется. > 2. использовать order by Вот этого достаточно. Необходимое и достаточное условие отсортированности записей - наличие order by Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 23:10 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35718529&tid=2003785]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 406ms |

| 0 / 0 |
