oracle管理之 index(server.102 b14231)

polestar123發表於2009-08-03
--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@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70612/viewspace-1024842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章