oracle管理之 index(server.102 b14231)
--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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle管理之 cluster(server.102 b14231)OracleServer
- oracle管理之 table(server.102 b14231)OracleServer
- oracle管理之 tablespace(server.102 b14231)OracleServer
- oracle管理之 partitioned table(server.102 b14231)OracleServer
- oracle管理之 undo tablespace(server.102 b14231)OracleServer
- oracle管理之 view synonym sequence(server.102 b14231)OracleViewServer
- oracle檔案管理之 archive log(server.102 b14231)OracleHiveServer
- oracle儲存管理之 segment和space管理(server.102 b14231)OracleServer
- oracle儲存管理之 oracle managed files(OMF)(server.102 b14231)OracleServer
- oracle儲存管理之 ASM(automatic storage management)(server.102 b14231)OracleASMServer
- oracle hint之hint_index_ffs,index_joinOracleIndex
- Oracle筆記 之 索引(index)Oracle筆記索引Index
- oracle hint之full,index,index_asc,index_desc,index_combile示例OracleIndex
- Oracle效能優化之“少做事”(rebuild index)Oracle優化RebuildIndex
- oracle index unusableOracleIndex
- oracle document indexOracleIndex
- Oracle Index InternalsOracleIndex
- 【Oracle】global index & local index的區別OracleIndex
- 【oracle 效能優化】組合索引之index_ssOracle優化索引Index
- oracle全文索引之About_INDEX_THEMES操作Oracle索引Index
- oracle全文索引之STOPLIST_ CTXCAT 索引_INDEX SETOracle索引Index
- oracle index索引原理OracleIndex索引
- zt_oracle indexOracleIndex
- oracle hint_no_indexOracleIndex
- oracle index monitoringOracleIndex
- oracle index 聚集因子OracleIndex
- oracle hints index格式OracleIndex
- oracle之 Oracle歸檔日誌管理Oracle
- ORACLE中index的rebuildOracleIndexRebuild
- Oracle 12c新特性之——TABLE ACCESS BY INDEX ROWID BATCHEDOracleIndexBAT
- oracle invisible index與unusable index的區別OracleIndex
- Oracle RAC 日常管理之CRS篇Oracle
- oracle11gRAC之asm管理OracleASM
- oracle檔案管理之 redo logOracle
- Oracle索引分裂(Index Block Split)Oracle索引IndexBloC
- oracle hint_no_parallel_no_parallel_indexOracleParallelIndex
- oracle hint_parallel_parallel_indexOracleParallelIndex
- Oracle alter index rebuild 說明OracleIndexRebuild