|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Прошу помощи в оптимизации запроса, куда копать? Запрос выполняется из java к firebird 2.5 для построения отчёта и выгрузки в Exсel. Если убрать из текста символы \" и ", то в чистом виде SQL. В таблице TRZ(rgAmountRests) данные о времени, количестве и признаках события. В таблице D(spcAzsDensity) событие изменения температуры и плотности. Для отчёта выдёргиваем данные из таблицы TRZ и добавляем данные по текущей плотности и температуре и вычисляем массу исходя из текущей плотности. Запрос на 3000 строк выполняется примерно 5 минут на разных машинах Pentium/CoreI5/XeonE5620. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:24 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
нечетабельно Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:29 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomЕсли убрать из текста символы \" и ", то в чистом виде SQL. ну так кто будет убирать - мы, что-ли? "вот вам мусорный текст, читайте"? Нет, спасибо. тем не менее - зачем в запросе налеплены вот эти суб-селекты? (select first 1). И вот это - "select max(D.\"Date\")" - три раза одно и то же? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:30 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomЕсли убрать из текста символы \" и ", то в чистом виде SQL. Ну так убери. Назачем нам тут Ява? За неиспользование параметров - отдельный эцих с гвоздями. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:32 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Подредактировал: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:50 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
LEFT-ы осознанные? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 13:54 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Всё что написано писал сотрудник, который учился программировать, я только пытаюсь разобраться - увидев, понял, что много лишнего, но дело не в эстетике кода, а понимании - можно ли переписать, увеличив скорость. Если нет, то смысла переписывать не вижу. На выходе получаем таблицу вида: АЗС Вид Гр. номер Эл. номер Держатель Дата Время Кол-во Плотность Темп. Масса azs 2 Аи-95 000201 950DE6116F Toyota 150 ХР 2019-09-03 10:36:32 -66.00 0.746000 7.000000 -49.23600000 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 14:02 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomя только пытаюсь разобраться Даже не пытайся. Выкинь код целиком, возьми исходную задачу и напиши запрос с нуля. На этот раз - с параметрами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 14:04 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, да тут не в LEFT дело, а в мутных подзапросах с агрегатами, которые перевыполняются многократно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 14:05 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
19.09.2019 14:05, Симонов Денис пишет: > да тут не в LEFT дело, а в мутных подзапросах с агрегатами, которые перевыполняются многократно не уверен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 14:16 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Имхо тут дело в консерватории. В смысле в отсутствии ID в архиве. Ему нужно три поля из одной и той же записи в архиве, а вложенный селект позволяет достать только одно. Что прилеплен второй уровень вложенности с максом вместо order by в первом уровне - это от дикости. Был бы в архиве ID, можно было бы архив приджойнить с одним вложенным селектом в условии Код: plsql 1.
и получать все три поля разом. А ещё у вас там без меня появились всякие псевдотаблицы, вроде тоже годно здесь, но я в них не вникал. Ну и, как всегда, индексы проверить - которых нет, создать, которые лишние, перебить или пригасить плюснолями. Например, поле DocTypeID подозрительное на эту тему. Первый лефт к бабке не ходи бездумно забабахан, второй, возможно, и нужен - если речь о держателях платёжных карт, а платить могут и налом. Что будет с запросом в случае нулла - не думал, лень. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 19:00 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicom, вот эту билиберду Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
скорее всего можно заменить на эту Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 19:52 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicom, Напиши хранимую процедуру, проще и быстрее. Что-то вроде этого Код: 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. 25. 26. 27. 28. 29. 30. 31.
и запрос потом из нее select * from new_procedure('12.12.1212', '12.12.1212') ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 13:14 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Добрый день. Обнаружил интересный факт. Выполнил первоначальный sql запрос в IBExperte через SQL Editor. Скорость выполнения запроса от 5 до 11 секунд в зависимости от выборки. А вот fetch зависит от полученного результата от 30 секунд(500 строк) до 5 минут при 3500 строк. Как я понимаю тормозит процесс получение результата, а не сам запрос. Можно ли ускорить процесс получения выборки? ------ Performance info ------ Prepare time = 16ms Execute time = 8s 705ms Avg fetch time = 1 243,57 ms Current memory = 13 725 576 Max memory = 14 181 572 Memory buffers = 2 048 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 27 420 626 ------ Performance info ------ Prepare time = 31ms Execute time = 5s 710ms Avg fetch time = 815,71 ms Current memory = 13 725 576 Max memory = 14 181 572 Memory buffers = 2 048 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 27 420 626 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 12:05 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicom, ну попробуй TempCahceLimit увеличить ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 12:18 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomДобрый день. Обнаружил интересный факт. Выполнил первоначальный sql запрос в IBExperte через SQL Editor. Скорость выполнения запроса от 5 до 11 секунд в зависимости от выборки. А вот fetch зависит от полученного результата от 30 секунд(500 строк) до 5 минут при 3500 строк. Как я понимаю тормозит процесс получение результата, а не сам запрос. Можно ли ускорить процесс получения выборки? это точно результаты Fetch All? 27 млн фетчей при 0 reads намекают. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 12:31 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Статистика приведена на момент окончания выполнения запроса, когда fetch All ещё не выполнен. Параметр Fetches from cache что означает? Это из другого запроса: ------ Performance info ------ Prepare time = 16ms Execute time = 2m 2s 601ms Avg fetch time = 15 325,13 ms Current memory = 9 406 060 Max memory = 14 181 572 Memory buffers = 2 048 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = -2 081 022 114 Ещё напрягает статистика в Performance Analysis -> Indexed Reads для таблицы spcAzsDensity зашкаливает а 152 миллиона, в то время как у других таблиц в районе 2000. При том что число записей у неё не самое большое примерно 8000. Что означает этот показатель? индекса у таблицы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 13:04 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
23.09.2019 13:04, basicom пишет: > индекса у таблицы нет. я тебе не верю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 13:05 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomПараметр Fetches from cache что означает? Число чтений страниц из страничного кэша. basicomиндекса у таблицы нет. Значит надо сделать. И вообще, статистика в основном бесполезна, кури план после вдумчивого чтения http://www.ibase.ru/dataaccesspaths/ Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 13:11 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
На каждую запись остатков с джойнами по 6 подзапросов в архив к одной и той же записи да ещё и натуралом... О чём тут ещё рассуждать-то. Гы, как говорится. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 13:35 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomСтатистика приведена на момент окончания выполнения запроса, когда fetch All ещё не выполнен. Параметр Fetches from cache что означает? Разбор полетов с медленным фетчем без статистики на этот самый фетч бессмысленна. Показывает подготовку записей на один буфер передачи. по дефолту 8k Fetches from cache означает сколько раз каждое значение поля было прочитано из страницы данных/индекса. если чтение с диска 0 - то все топталось на кэше в дефолтных 2048 страницах. basicomЭто из другого запроса: ------ Performance info ------ Prepare time = 16ms Execute time = 2m 2s 601ms Avg fetch time = 15 325,13 ms Current memory = 9 406 060 Max memory = 14 181 572 Memory buffers = 2 048 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = -2 081 022 114 а это старое доброе за пределами добра и зла MaxInt. basicomЕщё напрягает статистика в Performance Analysis -> Indexed Reads для таблицы spcAzsDensity зашкаливает а 152 миллиона, в то время как у других таблиц в районе 2000. При том что число записей у неё не самое большое примерно 8000. Что означает этот показатель? индекса у таблицы нет. то, что кто-то оттуда постоянно читает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 13:55 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, может я индексы с ключами путаю, поясните про веру в существование индекса?) скрин таблицы прикладываю... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 14:51 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
картинки выкладывают тупые тётеньки в своём бложике. а суровые мучачосы должны приводить полный DDL-скрипт таблицы. зы: не в виде картинки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 14:54 |
|
Оптимизация запроса Firebird 2.5
|
|||
---|---|---|---|
#18+
basicomиндексы с ключами путаю, поясните про веру в существование индекса?) - индексы на закладке Indices - по ключам PK, FK, Unique автоматически строятся индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 14:57 |
|
|
start [/forum/topic.php?fid=40&fpage=20&tid=1560571]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
others: | 29ms |
total: | 189ms |
0 / 0 |