达梦数据库索引实践
达梦数据库索引实践
达梦数据库支持二级索引,聚集索引,唯一索引,函数索引,位图索引,分区索引等。
默认的表是索引组织表,利用rowid创建一个默认的索引,所以我们创建的索引,称为二级索引。建索引的目的是加快表的查询,对数据库做DML操作的时候,数据库会自动维护索引。索引是一棵倒置的树,使用索引,就是对这个索引树进行遍历。
建立索引的规则:经常查询的列、连接条件列、谓词经常出现的列(where)、查询是返回表的一小部分数据
不适合创建索引的情况:列上有大量的null、列上的数据有限(例如:性别)
1、查看索引信息
讲索引之前注意一下:创建索引,删除,重建索引和收集统计信息,不要在业务高峰去做。
查看某个用户下的索引情况
select owner,table_name,index_name,index_type from dba_indexes where owner='TEST1';
首先创建一张来做下测试
create table TAB10 (id1 int, id2 int, id3 int, id4 int, id5 int, id6 int, id7 int, id8 int, name1 char(20), name2 varchar(30));
查询发现,创建表的时候会默认自带创建一个聚集索引。
select owner,table_name,index_name,index_type from dba_indexes where table_name='TAB10';
2、创建索引
创建默认索引(默认二级索引)
create or replace index index_default on TAB10 (id1);
创建聚集索引,自带聚集索引会被替换成新创建的
create or replace cluster index index_cluster on TAB10 (id2);
创建唯一索引
create or replace unique index index_unique on TAB10 (id3);
创建函数索引
create or replace index index_function on TAB10 (id1+id2);
创建位图索引时,提示位图索引与聚集索引不能构建在同一表上,需要单独的表里创建。
create or replace bitmap index index_bitmap on TAB10 (id4);
创建分区索引
create index index_partition on TAB10 (id5) global partition by range(id5)
(
partition g_p1 values less than(10),
partition g_p2 values less than(maxvalue)
);
3、维护索引
当有数据更新时可以重建索引
alter index index_default rebuild;
索引名称修改的语句
alter index index_partition rename to index_partition2;
删除索引跟删除表结构一样的语句
drop index index_partition2;
4、查询语句分析执行计划
通过查询执行计划发现默认会使用聚集索引
explain select * from TAB10;