
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.12.2016, 12:39
|
|||
|---|---|---|---|
|
|||
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
Приветствую! Таблица в базе имеется таблица AUFTRAG. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. и исторически сложилось, что сортировка по полю ID не дает сортировку по времени, по-этому добавили дополнительное поле ОRDER_ID_UNIQ. Проблема В программе необходимо находить ID ближайшего по шкале ORDER_ID_UNIQ от заданного :ID Вот мой запрос, который я прошу вас помочь мне ускорить (их 2, но говорю как об одном, т.к. они похожи): Код: 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. Планы обоих запросов одинаковые (смотри ниже). Ваши советы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 12:40
|
|||
|---|---|---|---|
|
|||
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
сорри, колонки без заголовков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 13:38
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
Кроик Семён, убери desc, получишь INDEX RANGE SCAN (MIN/MAX) Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 14:43
|
|||
|---|---|---|---|
|
|||
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
спасибо, начинаю проверку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 14:47
|
|||
|---|---|---|---|
|
|||
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
на тестовой машине помогло, на боевой только вечером получится проверить Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 18:41
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
как вариант, если ORDER_ID_UNIQ без больших пропусков, можно попробовать оценить стоимость такого извращения, для 11gR2 и выше: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 19:24
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
Кроик Семён -- это поиск ближайшего ID в сторону уменьшения ORDER_ID_UNIQ -- это поиск ближайшего ID в сторону увеличения ORDER_ID_UNIQ Код: 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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 19:45
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
SY, я так понял, что ему нужно next or prior по order_id_uniq, а не по id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 20:07
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
JafaSY, я так понял, что ему нужно next or prior по order_id_uniq, а не по id Код: plsql 1. 2. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 20:48
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
SY, извиняюсь, все правильно опробовал оба варианта, с рекурсивным запросом и аналитическими ф-циями на таблице с 300000 записей. И так, создаю таблицу AUFTRAG и заполняю ее записями до 300000: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 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. тестирую вариант с рекурсией Код: 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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. еще раз напомню, что вариант с рекурсией имеет результат хороший, если ORDER_ID_UNIQ не имеет больших пустот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 20:54
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
P.S. после инсерта в AUFTRAG выполнил Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 21:50
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
12c: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Правда неясно как оценить MATCH RECOGNIZE SORT DETERMINISTIC FINITE AUTOMATON. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 22:05
|
|||
|---|---|---|---|
|
|||
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
Jafaоценить стоимость такого извращенияRec with при данной постановке, да, это изврещение. Хорошо что ты это признаешь. SYПравда неясно как оценить MATCH RECOGNIZE SORT DETERMINISTIC FINITE AUTOMATON.Ребята, вы увлеклись какими-то попугаями не обращая внимания на изначальную постановку. Кроик СемёнВот мой запрос, который я прошу вас помочь мне ускорить Использование аналитики или паттерн матчинга и полного сканирования (индекса) - это даже не смешно. PS. Про FINITE AUTOMATON это не сакральные знания и легко находится поиском. MATCH_RECOGNIZE and the Optimizer и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2016, 22:15
|
|||
|---|---|---|---|
Прошу помощи в ускорении запроса (поиск соседа) |
|||
|
#18+
dbms_photoshop, Ну так ему-же ora_sql и предлoжил MIN/MAX. А мы так, пoбаловаться. А насчет MATCH RECOGNIZE SORT DETERMINISTIC FINITE AUTOMATON вопрос был не что это такое а как это оценить при сравнении например с SQL возвращающим тот жe результат через аналитику или агрегацию или рекурсию... SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1886772]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 469ms |

| 0 / 0 |
