首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高Oracle中connect-by查询的性能

如何提高Oracle中connect-by查询的性能
EN

Stack Overflow用户
提问于 2017-04-28 20:46:05
回答 1查看 397关注 0票数 0

我有以下connect by查询,对于my_table_name中500的记录计数,它大约需要50到60秒。

你们中的任何一个人可以建议一种更好的方式来编写这个查询,以提高性能。

代码语言:javascript
复制
SELECT DISTINCT REGEXP_SUBSTR(STD_DEP,'[^,]+', 1, LEVEL) AS DEP_STD_ID
FROM my_table_name
WHERE std_id = 242
  CONNECT BY REGEXP_SUBSTR(STD_DEP,'[^,]+', 1, LEVEL) IS NOT NULL;

在上面的查询中: STD_DEP是一个逗号分隔的字段,它将包含所有相关的std_id。

EN

回答 1

Stack Overflow用户

发布于 2017-04-28 21:39:53

在Oracle中有用于分割分隔字符串的many, many ways

不使用正则表达式的是:

代码语言:javascript
复制
WITH bounds ( id, list, start_pos, end_pos, lvl ) AS (
  SELECT id, list, 1, INSTR( list, ',' ), 1
  FROM   my_table_name
  WHERE  std_id = 242
UNION ALL
  SELECT id,
         list,
         end_pos + 1,
         INSTR( list, ',', end_pos + 1 ),
         lvl + 1
  FROM   bounds
  WHERE  end_pos > 0
)
SELECT id,
       SUBSTR(
         list,
         start_pos,
         DECODE( end_pos, 0, LENGTH( list ) + 1, end_pos ) - start_pos
       ) AS item,
      lvl
FROM   bounds
ORDER BY id, lvl;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43680598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档