--index management
--load data first,create index after
--创建索引的规则
1、query less then 15% rows of a large table
2、在多表连接字段上建立index
3、小表不需要建立index
4、在相对唯一的字段上建立b-tree index,集势小的字段上建立bitmap index
5、WHERE COL_X > -9.99 * power(10,125) 来代替 WHERE COL_X IS NOT NULL(假设col_x number类型
)
6、多字段复合index,注意字段顺序,只有匹配字段顺序的才可以利用索引
7、同一个表的index的数量,要权衡select update的性能,在只读表上可以多建index,在频繁更新的表
上index反而影响性能,因为update table的同时还要update 相关的index
8、建议index size最大为data的一半
9、index table分开tablespace存储能减少磁盘争用,但要求tablespace online,存储在一个
talbespace,维护方便
10、create index nologging + parallel 减少large table index create 的时间,做好db备份
--index (COALESCE vs rebuild)
COALESCE合并叶子节点数据,不单独需要额外空间;代价小,速度快
rebuild 重新建立index tree,需要额外空间,可以移动存储表空间,减小tree高度,成本高
ALTER INDEX vmoore COALESCE;
--唯一索引和非唯一索引
定义unique约束和primary key,oracle都会自动创建相关unique index
index创建 最好显示创建
CREATE TABLE c(c1 INT, c2 INT);
CREATE INDEX ci ON c (c1, c2);
ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci;
CREATE TABLE a (a1 INT PRIMARY KEY USING INDEX (create index ai on a (a1)));
CREATE INDEX emp_ename ON emp(ename) COMPUTE STATISTICS;
--创建大的index,单独设置一个临时表空间,创建完index,再删除temporary
CREATE INDEX emp_name ON emp (mgr, emp1, emp2, emp3) ONLINE;
CREATE INDEX area_index ON rivers (area(geo));
ALTER INDEX emp_name REBUILD ONLINE;
--index monitor
ALTER INDEX index MONITORING USAGE;
ALTER INDEX index NOMONITORING USAGE;
V$OBJECT_USAGE
ANALYZE INDEX...VALIDATE STRUCTURE
SELECT PCT_USED FROM INDEX_STATS WHERE NAME = 'index';
--index 性能视图
DBA_INDEXES
ALL_INDEXES
USER_INDEXES
DBA_IND_COLUMNS
ALL_IND_COLUMNS
USER_IND_COLUMNS
DBA_IND_EXPRESSIONS
ALL_IND_EXPRESSIONS
USER_IND_EXPRESSIONS
DBA_IND_STATISTICS
ALL_IND_STATISTICS
USER_IND_STATISTICS
INDEX_STATS
INDEX_HISTOGRAM
V$OBJECT_USAGE
[@more@]
--load data first,create index after
--创建索引的规则
1、query less then 15% rows of a large table
2、在多表连接字段上建立index
3、小表不需要建立index
4、在相对唯一的字段上建立b-tree index,集势小的字段上建立bitmap index
5、WHERE COL_X > -9.99 * power(10,125) 来代替 WHERE COL_X IS NOT NULL(假设col_x number类型
)
6、多字段复合index,注意字段顺序,只有匹配字段顺序的才可以利用索引
7、同一个表的index的数量,要权衡select update的性能,在只读表上可以多建index,在频繁更新的表
上index反而影响性能,因为update table的同时还要update 相关的index
8、建议index size最大为data的一半
9、index table分开tablespace存储能减少磁盘争用,但要求tablespace online,存储在一个
talbespace,维护方便
10、create index nologging + parallel 减少large table index create 的时间,做好db备份
--index (COALESCE vs rebuild)
COALESCE合并叶子节点数据,不单独需要额外空间;代价小,速度快
rebuild 重新建立index tree,需要额外空间,可以移动存储表空间,减小tree高度,成本高
ALTER INDEX vmoore COALESCE;
--唯一索引和非唯一索引
定义unique约束和primary key,oracle都会自动创建相关unique index
index创建 最好显示创建
CREATE TABLE c(c1 INT, c2 INT);
CREATE INDEX ci ON c (c1, c2);
ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci;
CREATE TABLE a (a1 INT PRIMARY KEY USING INDEX (create index ai on a (a1)));
CREATE INDEX emp_ename ON emp(ename) COMPUTE STATISTICS;
--创建大的index,单独设置一个临时表空间,创建完index,再删除temporary
CREATE INDEX emp_name ON emp (mgr, emp1, emp2, emp3) ONLINE;
CREATE INDEX area_index ON rivers (area(geo));
ALTER INDEX emp_name REBUILD ONLINE;
--index monitor
ALTER INDEX index MONITORING USAGE;
ALTER INDEX index NOMONITORING USAGE;
V$OBJECT_USAGE
ANALYZE INDEX...VALIDATE STRUCTURE
SELECT PCT_USED FROM INDEX_STATS WHERE NAME = 'index';
--index 性能视图
DBA_INDEXES
ALL_INDEXES
USER_INDEXES
DBA_IND_COLUMNS
ALL_IND_COLUMNS
USER_IND_COLUMNS
DBA_IND_EXPRESSIONS
ALL_IND_EXPRESSIONS
USER_IND_EXPRESSIONS
DBA_IND_STATISTICS
ALL_IND_STATISTICS
USER_IND_STATISTICS
INDEX_STATS
INDEX_HISTOGRAM
V$OBJECT_USAGE
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70612/viewspace-1024842/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/70612/viewspace-1024842/