Oracle - производительность между Regexp_substr и Instr - PullRequest
0 голосов
/ 24 декабря 2018

Как и мой заголовок, в некоторых случаях я вижу Regexp_substr быстрее и дешевле, чем в Instr, а в некоторых случаях - наоборот.Я не знаю, когда мне следует использовать Instr или Regexp_substr, кто-то может объяснить мне и рассказать о пользе каждого из них?Пример следующий:

**Regexp_substr:**

SELECT * FROM tabl1
WHERE 1 = 1
AND col1 IN (
 SELECT regexp_substr(abc,'[^,]+',1,level) AS A
 FROM (
  SELECT 001 abc -- replace with parameter
  FROM DUAL
  )
  CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (abc,'[^,]'))+1 );

**Instr:**

SELECT * FROM tabl1
WHERE 1 = 1
AND INSTR (',' || '001' || ',',',' || col1 || ',') > 0 ; 

Спасибо!

...