performance - 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 ;
谢谢!
解决方案
推荐阅读
- active-directory - 不使用 manager 属性的 directReports 的 LDAP 过滤器
- javascript - 具有空值的 int 数组
- xamarin - Xamarin 在 TabbedPage 中预加载 WebView
- c - 确保返回的指针是 const,而不抛出警告
- asp.net-core - 我可以更改子范围的服务配置吗?
- webhooks - Microsoft MessageCard:如何指定消息优先级
- python - 我尝试为囚徒困境中的学习算法创建相同类型的不同对象,但 python 混淆了它们
- excel - 不在列表视图、VBA Excel 上显示/创建自定义标题
- scapy - 在 MacBook Air 上更新 Catalina 后无法加载 scapy。Scapy:read_routes netif = rt[4 + mtu_present + prio_present + refs_present + 锁定]
- typescript - 如何使用 Typescript 从 require 中捕获抛出的错误?