ITPub博客

首页 > 数据库 > Oracle > 分区表分区索引查询效率探究

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

原创 Oracle 作者:dawn009 时间:2014-07-25 16:15:17 1 删除 编辑
                                 

                            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是有作用的,我迷糊了,请大虾指点,谢谢!
----------------------------------------->>
网友采纳
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条件顺序是不会影响性能的。只和你的执行计划有关。
----->>转载于:http://zhidao.baidu.com/link?url=fI6PsmYEjXnM3ILdO5h9wCzx5E1N3KPq9wy3mk9DvIhwTD06jvBYk1JEJqWIP8kvmp46yL5vLVCXkCd1nqJT4K


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

上一篇: Oracle常用脚本
请登录后发表评论 登录
全部评论

注册时间:2013-08-15

  • 博文量
    595
  • 访问量
    4989247