分区表分区索引查询效率探究

                                 

                            oracle数据库分区表按主键查询快还是按主键+分区条件查询快?

我有一张表,TEST,数据量很大, 主键是ID(number),这张表按SQBM(varchar2)字段分区,以下三个SQL,哪个最快?还是都一样?
1、select * from TEST where ID=?
2、select * from TEST where ID=? and SQBM=?
3、select * from TEST where SQBM=? and ID=?
我用PL/SQL查询分析器看到效率一样,因为都是走主键的UNIQUEINDEX,但是公司的人说加上SQBM是有作用的,我迷糊了,请大虾指点,谢谢!
-----------------------------------------&gt>
网友采纳
1.首先我想知道SQBM字段上是否存在INDEX,INDEX类型是global还是local partition。
SQBM上没有INDEX的话,则3个SQL的运行性能是一样的。都只会使用PK的index
2.如果表上存在(ID,SQBM)的组合INDEX,那么你添加SQBM条件是有作用的。
3.对于SQL2,SQL3 条件顺序颠倒是不会影响性能的。
追问
谢谢你,
1、SQBM字段上不存在INDEX,但是这张表按SQBM分区。
2、表上不存在(ID,SQBM)的组合INDEX。
3、这是oracle数据库,查询条件从右到左解析,也就是说,能够过滤大量数据的放最后比放前面效率高(但这里面有主键,我用PL\SQL查询分析器效率是一样的,但是公司的人说加上SQBM是有作用的,我想知道是我弄错了还是他弄错了)。
回答
如果表上没有任何INDEX,那么你加SQBM这个条件是有用的,可以由遍历所有分区,变为只遍历SQBM指定值的一个分区。
如果你SQBM上没有任何INDEX,而ID上存在主键,则3个SQL都会走主键,那么加上SQBM条件不会有任何性能提升。因为SQL根本就不会遍历表结构,而是去遍历索引结构。查到相关ID值的INDEX叶节点就会直接指向数据了。也就跟分区没什么关系了。

我不知道你数据库什么版本,使用CBO方式的话,where条件顺序是不会影响性能的。只和你的执行计划有关。
-----&gt>转载于:http://zhidao.baidu.com/link?url=fI6PsmYEjXnM3ILdO5h9wCzx5E1N3KPq9wy3mk9DvIhwTD06jvBYk1JEJqWIP8kvmp46yL5vLVCXkCd1nqJT4K

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29119536/viewspace-1227267/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29119536/viewspace-1227267/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值