社区
Oracle
帖子详情
ORACLE后面WHERE语句究竟应不影响性能
brehme2007
2009-11-27 11:13:53
前提是where后面的语句均不是主键。网上很多人认为应该把尽肯能缩小查询范围的语句写在后面 理论依据是在CBO的情况下SQL的语句解析顺序是从后到前面的。我做了测试也还是发现结果是没有发生改变,也很疑问,哪位可以更进步的解释下吗:或者给个例子。
...全文
95
7
打赏
收藏
ORACLE后面WHERE语句究竟应不影响性能
前提是where后面的语句均不是主键。网上很多人认为应该把尽肯能缩小查询范围的语句写在后面 理论依据是在CBO的情况下SQL的语句解析顺序是从后到前面的。我做了测试也还是发现结果是没有发生改变,也很疑问,哪位可以更进步的解释下吗:或者给个例子。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Dave
2009-11-27
打赏
举报
回复
[Quote=引用楼主 brehme2007 的回复:]
前提是where后面的语句均不是主键。网上很多人认为应该把尽肯能缩小查询范围的语句写在后面 理论依据是在CBO的情况下SQL的语句解析顺序是从后到前面的。我做了测试也还是发现结果是没有发生改变,也很疑问,哪位可以更进步的解释下吗:或者给个例子。
[/Quote]
Oracle是根据statistic数据统计来决定是走RBO(Rule-BasedOptimization),还是走CBO(Cost-BasedOptimization),会去选择哪种执行计划更划算,影响是否走相关的索引等.如果是CBO的话,它依靠准确的(或者说比较准确的)统计信息来产生优化的执行路径,如果没有做过统计,CBO也就没有做cost评估的依据,所以虽然是CBO,但是实际上还是用RBO了,而且如果不常做统计的话,由于CBO是以统计为依据的,所以这时CBO的依据信息有问题,CBO也会不准。 所以 DBA 需要确保定期收集统计信息,创建另一个执行核对清单。
......
Oracle 10g Statistic数据统计
----------------------------------------------------------------------------
Blog
: http://blog.csdn.net/tianlesoftware
网上资源
: http://tianlesoftware.download.csdn.net
相关视频
:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
QQ 群:62697716
huangyunzeng2008
2009-11-27
打赏
举报
回复
根据数据库的优化模式不同,可能会有影响,不过在9i之后这种考虑似乎是多余的。系统会自己制定最好的执行计划,但这个也不是绝对的。
ojuju10
2009-11-27
打赏
举报
回复
where后面的条件的顺序没有关系,数据库会自己选择
yu15tian
2009-11-27
打赏
举报
回复
[Quote=引用 5 楼 da21 的回复:]
几乎没关系。执行计划就可知道。印象中存在有关系的那么一丁点情况
[/Quote]
同意
thesecretblue
2009-11-27
打赏
举报
回复
学习
da21
2009-11-27
打赏
举报
回复
几乎没关系。执行计划就可知道。印象中存在有关系的那么一丁点情况
brehme2007
2009-11-27
打赏
举报
回复
那这样看来我就可以理解为关系不大或者没有关系了啊。
Oracle
数据库
性能
优化整套方法论之系统与实例优化
本套课程为
Oracle
数据库
性能
优化整套方法论的上半部课程,结合
Oracle
体系架构,从系统和实例优化的角度全面地介绍了
Oracle
数据库
性能
优化的基本理论和数据库
性能
的优化配置,通过本课程的学习,可以全面系统地掌握...
Oracle
WHERE判断
语句
后跟括号 or
关于
Oracle
WHERE
后面
跟判断
语句
问题 - 开发者知识库q 工作遇到一个问题:如果传入的分区变量 P_REPORT_TYPE 是’ALL‘时,那么就要将所有的公司编码 COMPANY_CODE 输出,但如果不是'ALL',那么就需要根据传入的另...
Oracle
数据库 where
语句
的执行顺序
Oracle
数据库,sql
语句
,where的执行顺序,是从左到右执行; 例子: 数据库中存储 scarleimp表 |sequence_no|transdate |seller_code| |202012211111|20201126|009| |202012211112|20201125|009| | | | scarle表 |...
Oracle
在where
语句
后添加日期限制条件
语法: select t*,t.rowid from DataBaseName where time >= to_date(‘2020-6-1’,‘yyyy-mm-dd’) and time2 <= to_date(‘2020-7-24’,‘yyyy-mm-dd’) 或者是 select t*,t.rowid from DataBaseName where ...
Oracle
中where
后面
加if,SQL:WHERE子句中的IF子句
使用CASE
语句
更新:以前的语法(如less数人指出)不起作用。 您可以使用CASE如下:WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber END或者你可以使用像@...
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章