度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
楼主: 刘亚东
打印 上一主题 下一主题

[分享] oracle in 查询速度优化

  [复制链接]

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
跳转到指定楼层
楼主
发表于 2020-4-18 20:56:08 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
在网上查了好多资料,都是说用什么exists,或者位图什么的。不过这些方法都是多少年以前的了,现在oracle10G以上的人家自己就已经优化了,所以用in 和 exists 是一样的效果。不过经过我的努力,这个"in"在某种情况下还是可以优化的,如下图是我用in查询的一个语句,执行结果让人忧伤啊,下面的三个表的数据分别是:800,700,1000,结果执行时间超过了1分钟:

折磨了我一天,终于想到了一个方法,就是用LIKE,之前网上也有资料说用LIKE,不过他就论坛恢复中写了一个单词LIKE,好家伙,一般人难以理解啊,下面我就把代码贴出来,仔细看是谁like谁哦:

好家伙,一下变6秒,妙哉妙哉。
在解释一下,就是用wm_concat()把in的类容转换为都好分隔的字符串,然后在那这个字符串去like。这个原理还没深入研究,不过事实是效率提高了,而且数据准确。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
沙发
 楼主| 发表于 2020-4-18 21:21:24 | 显示全部楼层
沙发居然被强了
回复 支持 反对

使用道具 举报

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
板凳
 楼主| 发表于 2020-4-18 21:22:13 | 显示全部楼层
你的动作好快
回复 支持 反对

使用道具 举报

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
地板
 楼主| 发表于 2020-4-19 19:57:20 | 显示全部楼层
太完美,太完美
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|玉祥公司客服-玉祥集团客服  本站关键词:快速开发平台

GMT+8, 2024-5-4 09:27 , Processed in 0.124705 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表