Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
25.09.2020, 14:59
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать 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, 15:22
|
|||
---|---|---|---|
Друзья помогите оптимизировать 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:25
|
|||
---|---|---|---|
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Reest199, тебе уже подсказывали в предыдущем топике. substr ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 15:33
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Stax, Так не получиться, необходимо много обращений, чтобы разбить данные ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 15:34
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
123йй, это уже совсем другая история ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 15:38
|
|||
---|---|---|---|
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Reest199 Stax, Так не получиться, необходимо много обращений, чтобы разбить данные шот я туплю, не могу понять задачку можете на примере показать что надо есть - получить ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 15:43
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Stax Reest199 Stax, Так не получиться, необходимо много обращений, чтобы разбить данные шот я туплю, не могу понять задачку можете на примере показать что надо есть - получить ..... stax есть массив с такими данными, текущий запрос отрабатывает 15 минут, а это очень долго для меня, потому мне нужно его как то ускорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 15:54
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Reest199, Код: plsql 1. 2. 3. 4. 5.
тоже долго? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 16:08
|
|||
---|---|---|---|
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Reest199 есть массив с такими данными, текущий запрос отрабатывает 15 минут, а это очень долго для меня, потому мне нужно его как то ускорить. так я и предлогаю за раз (15мин) выбрать сразу все нужные коды substr будет чутку быстрее, но не на много зы ускорить без индекса врядли получится ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 17:39
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
serpv Reest199, Код: plsql 1. 2. 3. 4. 5.
тоже долго? Вот блин, ааа, я всегда знал про лайк но что то меня неохотно заставляло его проверить, я в нем сомневался... решено... лайк более производителен к массивам, вообще да это странно но в моем случае твердый факт.. автор спасибо уже 3х, дай почту для фидбека отблагодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 17:42
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Stax, Да, очень странно, я сам думал что лайк вообще будет более длителен, но он зарешал ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 18:23
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
Reest199, a regexp_substr случайно тоже быстрым не стал, просто от того что предыдущие многострадания таблицу в кеш уместили? А вообще, правильное решение Stax под постановку задачи уже озвучил - получаете за один проход по таблице разбивку всех type_id по их двум цифирям. Хотите узнать причины "ускорений", то гуглИте комбинации "план запроса" "set autotrace traceonly" "explain plan for dbms.xplan". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 20:29
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать 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:46
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
> меня есть права только на Select. Этого я не заметил. Т.е. никаких прав по записи вообще? Тогда пусть DBA обеспечит индекс для скорости, это разумный запрос для решения бизнес задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.09.2020, 20:47
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать 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:58
|
|||
---|---|---|---|
Друзья помогите оптимизировать 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, 21:27
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать regexp_substr |
|||
#18+
SY, Это странно, т.к. я скопировал код из "показать sql". Я таблицы пока из GUI создаю. Мне показалось странным что индекс повторил формулу вместо названия колонки, но поскольку автор кода оракл, то я доверился что так и надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2020, 05: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, 13:20
|
|||
---|---|---|---|
Друзья помогите оптимизировать 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.09.2020, 01:30
|
|||
---|---|---|---|
|
|||
Друзья помогите оптимизировать 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, 02:53
|
|||
---|---|---|---|
Друзья помогите оптимизировать regexp_substr |
|||
#18+
НеофитSQL - у юзерских индексов глобальный scope, т.е. двум таблицам TEST1/TEST2 нельзя иметь индекс с одинаковым названием. Я заметил что для главного ключа автоматически создаваемый индекс совпадает по имени с ключом. Scope индекса не глобальный а в пределах схемы и не у "юзерских" а у всех включая SYS. Автоматически создаваемый constraint supporting индекс получает имя constraint'а как для PK так и для UK. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.11.2020, 14:46
|
|||
---|---|---|---|
Друзья помогите оптимизировать regexp_substr |
|||
#18+
НеофитSQL ... - Мой GUI не использует dbms_metadata.get_ddl() для показа "Show SQL" в свойствах таблицы, хотя это кажется самый простой метод показать правильный DDL из самого надежного источника. Почему - непонятно. ... потому, что ты правую кнопку мыши еще не освоил. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%91%D0%B0%D1%80%D0%B0%D0%BD%D1%87%D1%91%D0%93&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
12ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 2075ms |
total: | 2380ms |
0 / 0 |