社区
Oracle
帖子详情
oracle 简单过滤条件sql,但是过滤条件非常多,如何优化?
花开花落213214
2018-07-09 11:19:48
现有一个功能,在页面上选择筛选条件,过滤结果集。 在oracle里就是一句简单的sql查询过滤一张表,但是原表中的大部分列都可能被选中作为过滤条件。大概有20-30个列,请教大神们,如何优化才能快速得到查询结果?
sql:select xxx
from A
where A.a between and
and A.b between and
and A.c in ('','')
........
类似这样的sql
...全文
644
4
打赏
收藏
oracle 简单过滤条件sql,但是过滤条件非常多,如何优化?
现有一个功能,在页面上选择筛选条件,过滤结果集。 在oracle里就是一句简单的sql查询过滤一张表,但是原表中的大部分列都可能被选中作为过滤条件。大概有20-30个列,请教大神们,如何优化才能快速得到查询结果? sql:select xxx from A where A.a between and and A.b between and and A.c in ('','') ........ 类似这样的sql
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
学海无涯-回头是岸
2018-07-09
打赏
举报
回复
不好弄啊
。
花开花落213214
2018-07-09
打赏
举报
回复
等待大神出没。如果加索引好像没意义,全表3/4的列都要加。
minsic78
2018-07-09
打赏
举报
回复
全部位图索引可以对付一部分
jinsenhome
2018-07-09
打赏
举报
回复
如果你的筛选条件 有【必选】条件字段的话,就在那一列或多列上创建索引或组合索引。其他的条件字段就无所谓了。
这个表如何数据量很大的话,必须条件也都可能在那些列上变动的话, 真心不太好弄;应该修改业务逻辑!
(转)
Oracle
sql
优化
1
ORACLE
有个高速缓冲的概念,这个高速缓冲呢就是存放执行过的
SQL
语句,那
oracle
在执行
sql
语句的时候要做很多工作,例如解析
sql
语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的
sql
语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对
简单
的表起作用,多表的情况小完全没有效果啊,例如在查询单表的时候那叫一个快,但是假设...
Oracle
多表查询
优化
Oracle
有个高速缓冲的概念,这个高速缓冲就是存放执行过的
SQL
语句,那
oracle
在执行
sql
语句的时候要做很多工作,例如解析
sql
语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的
sql
语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对
简单
的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连...
Oracle
多表联合查询
优化
Oracle
有个高速缓冲的概念,这个高速缓冲就是存放执行过的
SQL
语句,那
oracle
在执行
sql
语句的时候要做很多工作,例如解析
sql
语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的
sql
语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对
简单
的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但...
Oracle
SQL
性能
优化
SQL
优化
(1) 选择最有效率的表名顺序(只在基于规则的
优化
器(
Oracle
有两种
优化
器:RBO基于规则的
优化
器和CBO基于成本的
优化
器)中有效):
ORACLE
的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就
Oracle
:
SQL
优化
建议
下述为34条
Oracle
中
SQL
的
优化
建议,仅供参考。
Oracle
17,134
社区成员
55,258
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章