首页 > 解决方案 > Oracle - Regexp_substr 和 Instr 之间的性能

问题描述

作为我的标题,在某些情况下,我看到 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 ; 

谢谢!

标签: performancecompareregexp-substr

解决方案


推荐阅读