关于分区表加where条件的一个疑问

[复制链接]
查看11 | 回复9 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
表table是一个分区表.按天分区
方式1:
select * from table a

left join tab_1 b on ....
where a.date_id = '20120101'
方式2:
select * from (select * from table where date_id = '20120101') a

left join tab_1 b on ....;
不知道2种方式的筛选数据的时候是否一致? 有没什么不同?

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
一样的
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
是一样的。只是后面那段效率比前面那段要高点
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
liu_tao_wl 发表于 2012-11-20 13:24
是一样的。只是后面那段效率比前面那段要高点

效率应该也一样
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
jnccyd 发表于 2012-11-20 15:03
效率应该也一样

不一样的 可以测试一个宽表试试。。数据量大了肯定就不一样了 后面是先框定一个范围然后缩小范围再笛卡尔积要快些 如果数据量不是很大肯定看不出来的。 呵呵
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
liu_tao_wl 发表于 2012-12-3 15:32
不一样的 可以测试一个宽表试试。。数据量大了肯定就不一样了 后面是先框定一个范围然后缩小范围再笛卡尔 ...

啥意思??oracle会查询转换的,不是你先写一个查询,它就写执行那查询
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
对比一下查询计划
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
liu_tao_wl 发表于 2012-12-3 15:32
不一样的 可以测试一个宽表试试。。数据量大了肯定就不一样了 后面是先框定一个范围然后缩小范围再笛卡尔 ...

这样的话就没有查询优化一说了
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
ORACLE 推荐用1,但自己写的时候喜欢用2
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
大王叫我来巡山嘞,巡了南山我巡北山哟……
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行