|
|
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Есть запрос для отчета сверки: Код: 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. 32. Суммирует себестоимость за месяц и остатки за весь период по магазинам 111,112,120,121,122 Выполняется полным сканированием таблицы. Таблица supermag.ffmaprep гигов десять. Запрос выполняется минут 10 (диски ssd) Можно как-то с помощью аналитических функций или других способов оптимизировать запрос? (Oracle 10g) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 10:28 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYY, запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:25 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYYпо магазинам 111,112,120,121,122Какой это процент от всех данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:31 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхlYY, запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать...Ну если он уходит в темп, то оптимизировать есть чего. 10 гигов за 10 минут на SSD это что-то не вполне адекватное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:32 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
EliclYYпо магазинам 111,112,120,121,122Какой это процент от всех данных? там может быть любой список магазинов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:33 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop10 гигов за 10 минут на SSD это что-то не вполне адекватное. да, странно это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:35 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхlYY, запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать... Тут как обычно всё. Разработчики написали эту хрень, которая забивает весь ввод-вывод и им плевать. А с меня пользователи спрашивают, почему сервер тормозит?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:38 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Я бы предложил агрегировать данные на ежемесячной основе. Затем уже выбирать из этих данных необходимые + месяц из supermag.ffmaprep З.Ы. Код: plsql 1. = Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:46 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYY, смотреть индексы какие есть, мож придется декоде переписать или скажем для 'WI','CS','CR' тож раз посчитать на начало года нет f.saledate>= поетому беда ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:51 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Dshedoo, подумаем. Уточнил объем таблицы, 48 Гб, 275 миллионов строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:52 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
индексы Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:55 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYYиндексы Код: plsql 1. 2. 3. 4. 5. 6. убрать decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) считать отдельно для f.salelocationfrom=-2 in f.salelocationto (... union all f.salelocationfrom<>-2 in f.salelocationfrom (... ps автор BETWEEN Оптимизатор всегда заменяет условие, использующее оператор сравнения BETWEEN, эквивалентным условием, использующим операторы сравнения <= и >=. Например, оптимизатор заменяет первое из двух следующих условий на второе: sal BETWEEN 2000 AND 3000 sal >= 2000 AND sal <= 3000 ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:08 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYYdbms_photoshop10 гигов за 10 минут на SSD это что-то не вполне адекватное. да, странно этоВерсия какая? Приложи в спойлер вывод Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:14 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Код: 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. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:36 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Dshedoo Код: plsql 1. 2. 3. 4. 5. Dshedoo Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:51 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
DshedooDshedoo Код: plsql 1. 2. 3. 4. 5. імхо плохо f.salelocationfrom = -2 f.salelocationto = 999 f.salelocationfrom =111 ps оракля юзает ф-цію LNNVL(f.salelocationfrom = -2) and .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:28 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYY, Я сейчас что-то набросаю, но вот вопрос, А зачем делать group by по f.saledate если больше его не использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:58 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Dshedoo Код: 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Так лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:03 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
lYY, По быстрому получилось что-то такое: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Хотя и не проверял =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:17 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MaximaXXLlYY, Я сейчас что-то набросаю, но вот вопрос, А зачем делать group by по f.saledate если больше его не использовать? это не я писал, я админ просто) Всем спасибо, я позже протестирую и по результатам отпишусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:31 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Else 0 подменить на where f.saletype in ('WO','WI','CS','CR') А так прям перфекто) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:54 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Взял исходный запрос на один магазин - 2 минуты, полное сканирование. Сделал через union all, как выше посоветовали. Идет по индексам, выполняется 2 секунды. Отправил разработчикам, путь тестируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 15:00 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MaximaXXLlYY, По быстрому получилось что-то такое: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Хотя и не проверял =) Не проходит вот эта строка: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 15:03 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
вот так работает: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. но дольше, 86 секунд, идет bitmap convertion ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 15:08 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Dshedoo, Там есть куда руки приложить ... else 0 можно игнорить ... все равно null под суммой будет проигнорирован. если добавлять f.saletype in ('WO','WI','CS','CR') то тогда уже так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Хотя так я бы прокоментировал что хотел сказать автор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 15:08 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39565887&tid=1884747]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 497ms |

| 0 / 0 |
