Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Влияние количества параметров sql / 3 сообщений из 3, страница 1 из 1
05.12.2023, 11:12
    #40138260
cerh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние количества параметров sql
Компиляция запроса при кол-ве параметров ~2500 штук от 10 мин до 30мин(прервал) будь то explain plan или выполнение sql , но если не менять кол-во параметров то выполняется в разумные сроки. Если оставить 100 параметров то explain plan отрабатывает бысто. Подскажите как решить проблему, переписывать sql нельзя, Oracle 12
...
Рейтинг: 0 / 0
19.12.2023, 13:53
    #40138309
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние количества параметров sql
Само по себе количество параметров для оптимизатора проблемой не является:
Код: 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.
Connected to Oracle Database 19c Enterprise Edition Release 19.0.0.0.0

SQL>
explain plan for
select * from dual where :p0=0 and :p1 = 1 and :p2 = 2 and :p3 = 3 and :p4 = 4 and :p5 = 5 and :p6 = 6 and :p7 = 7 and :p8 = 8 and :p9 = 9 and :p10 = 10
 and :p11 = 11 and :p12 = 12 and :p13 = 13 and :p14 = 14 and :p15 = 15 and :p16 = 16 and :p17 = 17 and :p18 = 18 and :p19 = 19 and :p20 = 20
...
 and :p2481 = 2481 and :p2482 = 2482 and :p2483 = 2483 and :p2484 = 2484 and :p2485 = 2485 and :p2486 = 2486 and :p2487 = 2487 and :p2488 = 2488 and :p2489 = 2489 and :p2490 = 2490
 and :p2491 = 2491 and :p2492 = 2492 and :p2493 = 2493 and :p2494 = 2494 and :p2495 = 2495 and :p2496 = 2496 and :p2497 = 2497 and :p2498 = 2498 and :p2499 = 2499 and :p2500 = 2500
;

Explained

Executed in 0.915 seconds

select * from dbms_xplan.display();
Plan hash value: 3752461848
---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |     2 |     2   (0)| 00:00:01 |
|*  1 |  FILTER            |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(TO_NUMBER(:P2500)=2500 AND TO_NUMBER(:P2499)=2499 AND
              TO_NUMBER(:P2498)=2498 AND TO_NUMBER(:P2497)=2497 AND
...
              TO_NUMBER(:P2356)=2356 AND TO_NUMBER(:P2355)=2355 AND
              TO_NUMBER(:P2354)=2354 AND TO_NUMBER(:P2353)=2353 AND TO_)

87 rows selected

SQL>
Попробуйте почитать
https://iusoltsev.wordpress.com/2011/08/25/long-parse-time/
https://iusoltsev.wordpress.com/2011/10/13/sql-long-parse-time-2/
...
Рейтинг: 0 / 0
20.12.2023, 23:08
    #40138311
cerh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние количества параметров sql
andrey_anonymous [игнорируется] 

спасибо, посмотрю, но все-таки переписал sql, хотя и не оптимально.
забыл сказать что sql типа
Код: SQL
1.
2.
3.
4.
5.
select * from (
select * from ...
union all
select * from ...
) where a=:1 or a=:2 or ... or a=:2000
...
Изменено: 20.12.2023, 23:13 - cerh
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Влияние количества параметров sql / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]