设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
高手请进,关于调优的这种说法有无依据? ...
返回列表
发新帖
高手请进,关于调优的这种说法有无依据?
[复制链接]
11
|
7
|
2006-6-10 17:18:36
|
显示全部楼层
|
阅读模式
1。驱动表的概念大家都不陌生,那数据库在驱动表选择上
是什么依据,from 语句的最后一个表名,会被做为驱动表,这种
概念对吗?
2。在写查询条件时,有的人说条件执行是从上到下,即把WHERE子句中,过滤最多记录的查询条件放到最前面,这样执行效率最高
另一说法有的人说是从下到上,即过滤最多记录的条件应该放到最后,那究竟哪一种概念准确呢?ORALCE内部WHERE语句的执行顺序到底是怎样的呢?
盼高人给予解答,谢谢!
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
2.oracle里where是从右往左执行的。
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
关注ing...
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
.RBO下是以最后一个表名为驱动表,CBO一般选择返回记录集最少的那个表做为驱动表
.如果是CBO,一般情况会选择最优的执行计划,也就是根据where条件选择合适的索引,所以顺序不是很重要,如果CBO不选择自己认为最优的执行计划的时候,就可以加上HINT
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
大家说的很明白,呵呵,谢谢,我把两个问题总结一下。
也就是说,第1个问题:驱动表的顺序只跟RBO有关,与CBO无关,在RBO中FROM后面的最后一个表会是驱动表
问题2:where 后的条件执行是从右到左,所以最后的条件,最先执行
呵呵,有错误大家再给纠正昂,谢谢
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
學習中。
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
最初由 COLDARCHON 发布
[B]大家说的很明白,呵呵,谢谢,我把两个问题总结一下。
也就是说,第1个问题:驱动表的顺序只跟RBO有关,与CBO无关,在RBO中FROM后面的最后一个表会是驱动表
问题2:where 后的条件执行是从右到左,所以最后的条件,最先执行
呵呵,有错误大家再给纠正昂,谢谢 [/B]
第二个你也站不稳!
如果按你说的,下面这个查询应该先执行rn2 like '%%'这个条件,能对吗??????
[php]
SQL> l
1* select max(rn1) from test1 where rn1='1000' and rn2 like '%%'
SQL> /
Execution Plan
----------------------------------------------------------
Plan hash value: 1405630421
------------------------------------------------------------------------------------------
| Id| Operation
| Name| Rows| Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
| | 1 |81 |10 (0)| 00:00:01 |
| 1 |SORT AGGREGATE
| | 1 |81 |
|
|
|*2 | TABLE ACCESS BY INDEX ROWID| TEST1 | 1 |81 |10 (0)| 00:00:01 |
|*3 |INDEX RANGE SCAN
| TEST1_RN1 | 6 | | 3 (0)| 00:00:01 |
------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("RN2" LIKE '%%')
3 - access("RN1"='1000')
[/php]
回复
使用道具
举报
千问
|
2006-6-10 17:18:36
|
显示全部楼层
恩,楼上的说的很对,我想准确的说法应该是第二条,也有个条件,是基于RBO来说的,这个大家有异议吗
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行