Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
имеем запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. при выполении все записи отсортированы, но если убрать последнюю строку (limit 100) то сортировки нету, т.е. записи идут в хаотичном порядке ... почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 12:19 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
проведя некоторые исследования, получил следующие показатели, а именно при значении limit 10000 записи отсортированы как надо но если увеличить например до 20000 записей, то записи начинают идти в хаотичном порядке ... ( в таблице порядка 40000~ ). В чем прикол... буду рад если объясните почему так происходит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 13:10 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
мне думается, вот почему 7.5. Sorting Rows After a query has produced an output table (after the select list has been processed) it can optionally be sorted. If sorting is not chosen, the rows will be returned in an unspecified order. The actual order in that case will depend on the scan and join plan types and the order on disk , but it must not be relied on. A particular output ordering can only be guaranteed if the sort step is explicitly chosen. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 13:28 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Мишган-кабанчикпроведя некоторые исследования, получил следующие показатели, а именно при значении limit 10000 записи отсортированы как надо но если увеличить например до 20000 записей, то записи начинают идти в хаотичном порядке ... ( в таблице порядка 40000~ ). В чем прикол... буду рад если объясните почему так происходит :) Дык все просто. Читаем матчасть. Для того что бы отобрать первые n записей должно быть определено отношения порядка записей. В запросе порядок не указан. Соотвественно это лично постгресовское дело как его ввести (в доке так и написано). При изменении константы меняется план/механизм выполнения запроса (может чего кешируется или еще чего) - вот оно то сортирует (для внутренних нужд) или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 13:48 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Мишган-кабанчикимеем запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. при выполении все записи отсортированы, но если убрать последнюю строку (limit 100) то сортировки нету, т.е. записи идут в хаотичном порядке ... почему? Да, потому что на основной селект сортировки нет, поэтому и выводит как карта ляжет (т..е как сказал st_serg). А может просто переписать таким вот образом: Код: plaintext 1. 2. 3. 4. И разрешите поинтересоваться, а зачем вам self join по одному и томуже полю? Ведь это, по идее, просто каждое поле будет дублироваться (если row_id уникальный)? Или вы привели не "боевой" запрос, а просто как пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 14:02 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
реальный запрос намного больше, просто этот по сути похож. Запросец, был под ораклёвую базу... Под оракулом запрос выглядит немного по другому: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. а засчет того, что внутренний запрос выбирает только 1 поле ... то и время его выполнения намного меньше (2 Jelis не верите сравните мой и ваш запрос, мой отрабатывается 20 сек , ваш - 97, есть индекс на row_id - btree, ессно под Postgres). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 08:48 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Вы, кстати, попробуйте еще сделать индекс на ( SUBSTR(row_id, 1, 2)::integer ) * 1000000 + ( SUBSTR(row_id, 4, 8) :: integer) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 15:23 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Мишган-кабанчик вобщем-то всё дело в хинте (реально надо, что-бы как можно быстрее возвращались первые строки), а засчет того, что внутренний запрос выбирает только 1 поле ... то и время его выполнения намного меньше (2 Jelis не верите сравните мой и ваш запрос, мой отрабатывается 20 сек , ваш - 97, есть индекс на row_id - btree, ессно под Postgres). Вполне, вполне возможно! Но так в "моем" запросе тоже попробуйте только одно поле выбирать из первой таблицы :-) Код: plaintext 1. 2. 3. 4. И вы сравниваете версии с лимитом или без? У меня планировщик на подобном запросе без лимита выдает seq scan, а с лимитом index scan - тоже не маловажная разница! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 15:39 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 19:09 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Ну не скрииншоты но план запроса EXPLAIN ANALYZE был бы интересен. Да на форуме затерялся линк на отличную статью по оптимизации PostgreSQL от Sad Spirit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 21:55 |
|
||
|
интересно ...
|
|||
|---|---|---|---|
|
#18+
Shweikно план запроса EXPLAIN ANALYZE был бы интересен мой Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 07:30 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=301&tid=2005624]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 361ms |

| 0 / 0 |
