|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Привет, помогите решить вопрос не прибегая к индексации, причина в чем, у меня есть права только на Select. Есть задача вытащить из большого массива определенные айдишки по TYPE_ID Вид данных TYPE_ID : "H.235774465.0" , "S.132355636.69" , "R.6234123.0" Мне нужно их вытащить из массива много раз, учитывая 2 последние цифры от 2-рой точки. Тоесть для H - 65, S - 36, R - 23 Запрос выглядит следующим образом: SELECT * FROM test_data t WHERE t.data_load is null AND regenxp_substr (t.type_id , '(..)\.' , 1 , 1 , null , 1) = '01' Такой запрос отрабатывает около 12-15 минут, это крайне критично для меня, т.к. после этого мне необходимо продолжить список обращений к базе, ='01' , = '02' , = '03' , и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 14:59 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199, не совсем понял то надо выбирайте за раз SELECT t.* ,regenxp_substr (t.type_id , '(..)\.' , 1 , 1 , null , 1) xx FROM test_data t WHERE t.data_load is null ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:22 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199, тебе уже подсказывали в предыдущем топике. substr ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:25 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Stax, Так не получиться, необходимо много обращений, чтобы разбить данные ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:33 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
123йй, это уже совсем другая история ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:34 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199 Stax, Так не получиться, необходимо много обращений, чтобы разбить данные шот я туплю, не могу понять задачку можете на примере показать что надо есть - получить ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:38 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Stax Reest199 Stax, Так не получиться, необходимо много обращений, чтобы разбить данные шот я туплю, не могу понять задачку можете на примере показать что надо есть - получить ..... stax есть массив с такими данными, текущий запрос отрабатывает 15 минут, а это очень долго для меня, потому мне нужно его как то ускорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:43 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199, Код: plsql 1. 2. 3. 4. 5.
тоже долго? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 15:54 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199 есть массив с такими данными, текущий запрос отрабатывает 15 минут, а это очень долго для меня, потому мне нужно его как то ускорить. так я и предлогаю за раз (15мин) выбрать сразу все нужные коды substr будет чутку быстрее, но не на много зы ускорить без индекса врядли получится ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 16:08 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
serpv Reest199, Код: plsql 1. 2. 3. 4. 5.
тоже долго? Вот блин, ааа, я всегда знал про лайк но что то меня неохотно заставляло его проверить, я в нем сомневался... решено... лайк более производителен к массивам, вообще да это странно но в моем случае твердый факт.. автор спасибо уже 3х, дай почту для фидбека отблагодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 17:39 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Stax, Да, очень странно, я сам думал что лайк вообще будет более длителен, но он зарешал ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 17:42 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199, a regexp_substr случайно тоже быстрым не стал, просто от того что предыдущие многострадания таблицу в кеш уместили? А вообще, правильное решение Stax под постановку задачи уже озвучил - получаете за один проход по таблице разбивку всех type_id по их двум цифирям. Хотите узнать причины "ускорений", то гуглИте комбинации "план запроса" "set autotrace traceonly" "explain plan for dbms.xplan". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 18:23 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
Reest199 Stax, Да, очень странно, я сам думал что лайк вообще будет более длителен, но он зарешал лайк (и его брат substr) значительно быстрее regexp_substr, который тут вряд ли нужен. > Мне нужно их вытащить из массива много раз, учитывая 2 последние цифры от 2-рой точки. Тоесть для H - 65, S - 36, R - 23 Если нужно часто искать 'H.....65.' и подобные предсказуемые выражения, почему не завести виртуальную колонку с индексом? Я попробовал так, у меня работает: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4.
после этого ищешь на равенство, ='H.01.' равенства по индексу оракл любит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 20:29 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
> меня есть права только на Select. Этого я не заметил. Т.е. никаких прав по записи вообще? Тогда пусть DBA обеспечит индекс для скорости, это разумный запрос для решения бизнес задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 20:46 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
serpv Reest199, a regexp_substr случайно тоже быстрым не стал, просто от того что предыдущие многострадания таблицу в кеш уместили? А вообще, правильное решение Stax под постановку задачи уже озвучил - получаете за один проход по таблице разбивку всех type_id по их двум цифирям. Хотите узнать причины "ускорений", то гуглИте комбинации "план запроса" "set autotrace traceonly" "explain plan for dbms.xplan". Друг, не все так просто, моя ошибка что я не описал саму суть как она есть, смотри я шина передачи между 2 ух баз, у одной забрать в другую прокинуть, в моем случае важно для каждой передачи обусловиться 01 , 02 , 03 , 04 , 05, 06 так это будут разные вызовы передачи а тоесть разными запросами, тоесть если я в один запрос вмещю 01, 02, 03 то принимающая база ляжет от такой подачи массива... но у меня была трабла как мне минимизировать время такой подачи данных исходя из каждой подгруппы 01, 02 , 03... решением по факту остался за like, нежели за rexgen, При передачи rexgen выдавал 240 строк в секунду когда like 14.000 стро в секунду, что меня абсолютно устроило ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 20:47 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
НеофитSQL Если нужно часто искать 'H.....65.' и подобные предсказуемые выражения, почему не завести виртуальную колонку с индексом? Я попробовал так, у меня работает: А не должно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 20:58 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
SY, Это странно, т.к. я скопировал код из "показать sql". Я таблицы пока из GUI создаю. Мне показалось странным что индекс повторил формулу вместо названия колонки, но поскольку автор кода оракл, то я доверился что так и надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:27 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
У меня та же ошибка на моем 11.2, который собственно и сгенерил эти команды. заменил на имя поля вместо формулы - создало индех.. create index TYPE_SHORT_INDEX on TEST2 ( type_short ); открываю свойства этой второй созданной таблицы, жму "показать sql" и.. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
странно это все.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 05:27 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
НеофитSQL странно это все.. Небось сгенерировано каким-нибудь левым GUI: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 13:20 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
SY>Небось сгенерировано каким-нибудь левым GUI В моем случае, это PL/SQL Developer, AllRound Automations. Мой первый GUI для Оракл :) Попробовал твою команду, select dbms_metadata.get_ddl('INDEX','TYPE_SHORT_INDEX') from dual; Получил правильный результат. В процессе открыл для себя пару важных вещей. - у юзерских индексов глобальный scope, т.е. двум таблицам TEST1/TEST2 нельзя иметь индекс с одинаковым названием Вместо TYPE_SHORT_INDEX было бы лучше назвать его XIF01TEST1, с привязкой к имени таблицы. - Мой GUI не использует dbms_metadata.get_ddl() для показа "Show SQL" в свойствах таблицы, хотя это кажется самый простой метод показать правильный DDL из самого надежного источника. Почему - непонятно. По поводу наименования индексов - есть ли традиция как называть индексы, или тут поле для творчества? Я заметил что для главного ключа автоматически создаваемый индекс совпадает по имени с ключом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 01:30 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
НеофитSQL - у юзерских индексов глобальный scope, т.е. двум таблицам TEST1/TEST2 нельзя иметь индекс с одинаковым названием. Я заметил что для главного ключа автоматически создаваемый индекс совпадает по имени с ключом. Scope индекса не глобальный а в пределах схемы и не у "юзерских" а у всех включая SYS. Автоматически создаваемый constraint supporting индекс получает имя constraint'а как для PK так и для UK. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 02:53 |
|
Друзья помогите оптимизировать regexp_substr
|
|||
---|---|---|---|
#18+
НеофитSQL ... - Мой GUI не использует dbms_metadata.get_ddl() для показа "Show SQL" в свойствах таблицы, хотя это кажется самый простой метод показать правильный DDL из самого надежного источника. Почему - непонятно. ... потому, что ты правую кнопку мыши еще не освоил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 14:46 |
|
|
start [/forum/topic.php?fid=52&fpage=33&tid=1880743]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 329ms |
total: | 467ms |
0 / 0 |