to shadowfalao(): 也就是说,我这句查询: select * from t1 Partition(part20040621) where tid = '2004062112121299999999';和这句: select * from t1 where tid = '2004062112121299999999';效率是一样的?
帮你顶 好像Oracle区很少高手,呵呵
shadowfalao() 和iihero(阿黑哥)说法不一样!
应该是不用加入分区名称的,oracle会根据你的分区规则自动的在数据所在分区中进行查找
以12个分区为例: 1.select * from t1 where tid = '2004062112121299999999'; 此时SQL查询语句并没有指定分区名称及分区字段,没有给Oracle提供快速定位分区的必要条件,Oracle不可能知道要在哪个分区中进行查找,范围为1-12; 2.select * from t1 Partition(part20040621) where tid = '2004062112121299999999'; 指定分区名称,快速定位分区part20040621,只在该分区内进行查找; 3.select * from t1 where tid = '2004062112121299999999' and pdate='20040621'; 指定分区字段,此时Oracle会根据pdate的值快速定位分区part20040621,只在该分区内进行查找; 本人并没有发现在效率上和2有太大区别,但可操作性和可维护性要胜过2;
select * from t1 Partition(part20040621) where tid = '2004062112121299999999';和这句:
select * from t1 where tid = '2004062112121299999999';效率是一样的?
好像Oracle区很少高手,呵呵
1.select * from t1 where tid = '2004062112121299999999';
此时SQL查询语句并没有指定分区名称及分区字段,没有给Oracle提供快速定位分区的必要条件,Oracle不可能知道要在哪个分区中进行查找,范围为1-12;
2.select * from t1 Partition(part20040621) where tid = '2004062112121299999999';
指定分区名称,快速定位分区part20040621,只在该分区内进行查找;
3.select * from t1 where tid = '2004062112121299999999' and pdate='20040621';
指定分区字段,此时Oracle会根据pdate的值快速定位分区part20040621,只在该分区内进行查找;
本人并没有发现在效率上和2有太大区别,但可操作性和可维护性要胜过2;