oracle分区索引问题

wodehongseupan 2011-08-22 08:27:30
我创建了1个普通表;一个分区表,分区表按月份划分了2个区。然后分别在普通表创建索引,在分区表上分别创建全局和本地索引。跨分区,查询了8千万条数据进行性能测试。可是得出的结果却是使用了全局索引的分区表,要比使用本地索引的分区表和普通表的效率还要低。按常理说,如果跨分区查数据的话,使用全局索引的分区表要比使用局部索引的分区表的效率高阿,高手们这是怎么回事阿??
=========================
分区表:
CREATE TABLE TABLE_PARTITION(
USERID VARCHAR2(256 BYTE) NOT NULL,
USERNAME VARCHAR2(256 BYTE) NOT NULL,
AGE NUMBER(10) NOT NULL,
SEX VARCHAR2(256 BYTE) NOT NULL,
BIRTHDAY DATE NOT NULL,
TEST1 VARCHAR2(256 BYTE) NOT NULL,
TEST2 VARCHAR2(256 BYTE) NOT NULL,
TEST3 VARCHAR2(256 BYTE) NOT NULL,
TEST4 VARCHAR2(256 BYTE) NOT NULL
)
PARTITION BY RANGE (BIRTHDAY)
(
PARTITION ORD_PART01 VALUES LESS THAN (to_date('2011-02-01','yyyy-mm-dd')) TABLESPACE PARTITIONSPACE_A,
PARTITION ORD_PART02 VALUES LESS THAN (to_date('2011-03-01','yyyy-mm-dd')) TABLESPACE PARTITIONSPACE_B
)
========================
分区全局索引:
CREATE INDEX IDX_GLOBAL_PARTITION_BIRTHDAY
ON TABLE_PARTITION(BIRTHDAY)
GLOBAL PARTITION BY RANGE (BIRTHDAY)
(
PARTITION I_ORD_PART01 VALUES LESS THAN (to_date('2011-02-01','yyyy-mm-dd')) TABLESPACE PARTITION_INDEX_SPACE,
PARTITION I_ORD_OTHER VALUES LESS THAN (MAXVALUE) TABLESPACE PARTITION_INDEX_SPACE_B
);
===========================
分区本地索引:
CREATE INDEX IDX_LOCAL_PARTITION_BIRTHDAY ON TABLE_PARTITION(BIRTHDAY)
LOCAL (PARTITION I_ORD_PART01 TABLESPACE PARTITION_INDEX_SPACE,
PARTITION I_ORD_PART02 TABLESPACE PARTITION_INDEX_SPACE_B
);
===========================
sql测试语句:
select count(*) from TABLE_PARTITION where (BIRTHDAY > to_date('2011-01-03','yyyy-mm-dd') and BIRTHDAY < to_date('2011-02-12','yyyy-mm-dd'));
============================
大虾们帮帮忙阿!!!!
...全文
193 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodehongseupan 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lzd_83 的回复:]
对于分区表索引的查询,本地分区表和普通表效率低;
跨分区查数据的话,使用全局索引的分区表要比使用局部索引的分区表的效率高,
全局索引的话从整张表考虑的,而局部索引的从某个字段考虑的,具体要看执行
计划才能看出那个效率比较低的。
[/Quote]
可是我执行的结果,为什么是全局的索引,效率要低于普通表的索引和分区表的本地索引呢?我写的有问题吗,我感觉很奇怪阿!!!!
Rotel-刘志东 2011-08-22
  • 打赏
  • 举报
回复
对于分区表索引的查询,本地分区表和普通表效率低;
跨分区查数据的话,使用全局索引的分区表要比使用局部索引的分区表的效率高,
全局索引的话从整张表考虑的,而局部索引的从某个字段考虑的,具体要看执行
计划才能看出那个效率比较低的。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧