|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Производительность запроса? Исходный запрос: Код: plsql 1. 2. 3. 4. 5. 6.
выполняется за 0.045 сек. Модифицированный запрос Код: plsql 1. 2. 3. 4.
выполняется за 1.05 сек. Вариация Код: plsql 1.
работает еще медленнее. Поля AUF_NR numeric(9) ERFASS_DAT timestamp without time zone Планы запросов - одинаковые. Где Я потерял 0.6 сек? Что не так с BETWEEN? Почему первый - там разница в формате вывода месяца - запрос вообще вернул правильные данные? Тапками кидать можно, но всего пару дней как разбираюсь с постгрее... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:14 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003, покажите explain (analyze,buffers) всех 3 запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:16 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003 Почему первый - там разница в формате вывода месяца - запрос вообще вернул правильные данные? Вы в этом уверены, что вернул именно правильные? ))) смысл сравнивать время работы неправильного запроса - вообще не понятно И вообще не понятно, как он мог хоть что-то вернуть, т.к., например: условие 01-01-2019 >= 01-JAN-2019 для большинства локалей будет ложно цифры в ASCII таблицы обычно идут ДО букв, хотя. конечно, зависит от настройки локали т.ч. 0 >= J всегда должно быть ложно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:32 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003, На то, что берутся данные за Январь и за Апрель - можно не смотреть - разница есть и в пределах одного месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:37 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Первый и второй запрос смотрят на разные месяцы, а значит могут возвращать очень разное количество строк. Попробуйте Код: sql 1. 2. 3.
или Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:48 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Melkij, Legend: Node Type Relation Name Startup Cost Total Cost Actual Rows Plan Rows Plan Width Actual Startup Time Actual Total Time Actual Loops Parallel Aware 1 (WHERE D.AUF_NR=H.AUF_NR ). Код: plaintext 1. 2. 3.
3 (Between). Код: plaintext 1. 2. 3.
2. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:50 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, >Вы в этом уверены, что вернул именно правильные? Не уверен. Я вообще "не знаю" что там за данные. Но тот кто смотрел данные сказал что они его устраивают. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:52 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, >цифры в ASCII таблицы обычно идут ДО букв Это - понятно. Непонятно почему сравнение двух длинных целых работает медленнее сравнения строк, включая преобразование одного из этих целых в строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:58 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003 Melkij, Legend: Node Type Relation Name Startup Cost Total Cost Actual Rows Plan Rows Plan Width Actual Startup Time Actual Total Time Actual Loops Parallel Aware 1 (WHERE D.AUF_NR=H.AUF_NR ). Код: plaintext 1. 2. 3.
3 (Between). Код: plaintext 1. 2. 3.
2. Код: plaintext 1. 2. 3.
а вывести текстовый вывод эксплейнов религия не велит ? тег [csv] освойте хотя бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 15:03 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Guzya, авторselect * from AUF_POS D INNER JOIN AUF_KOPF H ON D.auf_nr = H.AUF_NR where H.ERFASS_DAT BETWEEN '2019-04-01' AND '2019-04-30'; Примерно в два раза медленнее Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 15:08 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
qwwq, >а вывести текстовый вывод эксплейнов религия не велит ? Не религия, но навыки. Если проще - не умею. Умею взять план в дбФорге и запостить "как есть". Могу еще скинуть ХМЛ. Из командной строки с сервером пока не работаю - не умею. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 15:11 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003, N.P. Собрал в кучку 4 варианта запроса. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Выполнил несколько раз. Наиболее показательные тайминги: Query opened in 0.129s [0.043s exec, 0.086s fetch] Query opened in 0.132s [0.042s exec, 0.090s fetch] Query opened in 0.133s [0.042s exec, 0.091s fetch] Query opened in 0.128s [0.042s exec, 0.086s fetch] Query opened in 0.012s [0.006s exec, 0.006s fetch] Query opened in 0.004s [0.003s exec, 0.001s fetch] Query opened in 0.450s [0.017s exec, 0.433s fetch] Query opened in 0.134s [0.041s exec, 0.093s fetch] Нагрузка на сервер сегодня примерно ноль - все уже выключено перед рождественскими каникулами. Так что выпал в сильное непонимание того что и как должно работать... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 15:32 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Поковырял планы запросов в части фильтрации: Некорректный формат месяца: Filter: ((to_char(erfass_dat, 'DD-MM-YYYY'::text) >= '01-APR-2019'::text) AND (to_char(erfass_dat, 'DD-MM-YYYY'::text) <= '30-APR-2019'::text)) Rows Removed by Filter: 21985 Kорректный формат месяца: Filter: ((to_char(erfass_dat, 'DD-MON-YYYY'::text) >= '01-APR-2019'::text) AND (to_char(erfass_dat, 'DD-MON-YYYY'::text) <= '30-APR-2019'::text)) Rows Removed by Filter: 21195 Версия BETWEEN Filter: ((erfass_dat >= to_date('01-APR-2019'::text, 'DD-MON-YYYY'::text)) AND (erfass_dat <= to_date('30-APR-2019'::text, 'DD-MON-YYYY'::text))) Rows Removed by Filter: 460049 Но почему последняя практически не ускоряет запрос - не понимаю. Последний вариант, где поле и дата без преобразования - тоже не понимаю. Но тут непонимание другого - какая именно будет компарация и что будет кастится. Filter: ((erfass_dat >= '2019-04-01 00:00:00'::timestamp without time zone) AND (erfass_dat <= '2019-04-30 00:00:00'::timestamp without time zone)) Rows Removed by Filter: 460049 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 16:20 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
PinkCat.000003, Сторонний вопрос: как запросом собрать в одну таблицу результат анализа нескольких версий запроса? Вроде на stackoverflow рекомендовали писать функцию. Чего по-проще нету? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 16:23 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Как минимум показывайте DDL таблиц и какие есть индексы Т.к. на мой взгляд, в планах какая-то ерунда. При таком запросе и правильном индексе никакого seq scan быть не должно. Хотя с планами PostgreSQL близко не знаком (использую Oracle) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 16:56 |
|
Производительность запроса?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Индекса по полю - ERFASS_DAT - нет. По этому полный скан Я воспринимаю как нормальное поведение. По - AUF_NR - есть. Вроде первичный, но неуникальный. Детали не помню - база не моя. Ну да ладно - в этом году уже все. Всех - с Наступающим... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 17:49 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1994884]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 410ms |
0 / 0 |