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 invisible index與unusable index的區別OracleIndex
- 【INDEX】Oracle 索引常見知識梳理IndexOracle索引
- Oracle vs PostgreSQL Develop(31) - Index Only ScanOracleSQLdevIndex
- [20230908]Oracle Index Range Scan with LIKE Condition on Wildcard '_'.txtOracleIndex
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- Oracle中的虛擬列索引-nosegment indexOracle索引Index
- Oracle vs PostgreSQL Develop(30) - Index&Case whenOracleSQLdevIndex
- Elasticsearch之索引模板index template與索引別名index aliasElasticsearch索引Index
- 淺析oracle b-tree index搜尋原理OracleIndex
- 【SqlServer】管理全文索引(FULL TEXT INDEX)SQLServer索引Index
- index_oracle索引梳理系列及分割槽表梳理IndexOracle索引
- Oracle 19c Concepts(03):Indexes and Index-Organized TablesOracleIndexZed
- Oracle資料庫中的不可見索引 invisible indexOracle資料庫索引Index
- 【INDEX】Oracle19c 自動索引技術初探IndexOracle索引
- Oracle 19c中的自動索引(DBMS_AUTO_INDEX)Oracle索引Index
- Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ(轉)Oracle 10gIndex
- 【TUNE_ORACLE】列出走了INDEX FULL SCAN的SQL參考OracleIndexSQL
- 【TUNE_ORACLE】列出走了INDEX SKIP SCAN的SQL參考OracleIndexSQL
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- oracle job管理(zt)Oracle
- MySQL 優化之 index_merge (索引合併)MySql優化Index索引
- Vue-Router原始碼分析之index.jsVue原始碼IndexJS
- Python之pandas:pandas中to_csv()、read_csv()函式的index、index_col引數詳解之詳細攻略Python函式Index
- Oracle OCP(21):管理表Oracle
- ORACLE 概要檔案管理Oracle
- Oracle OCP(58):ARCHIVELOG 管理OracleHive
- oracle 使用者管理Oracle
- Oracle DG管理Broker配置Oracle
- Oracle:PDB 引數管理Oracle
- 系統管理指南:Oracle Solaris Containers-資源管理和 Oracle Solaris ZonesOracleAI
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- Oracle之結構Oracle
- 【SCRIPT】Oracle表管理段管理常用語句Oracle
- Index of /virtualboxIndex
- PostgreSQL:INDEXSQLIndex
- 前端面試之層疊上下文(z-index)前端面試Index
- Oracle listener log配置與管理Oracle
- 【BLOCK】Oracle 塊管理常用SQLBloCOracleSQL
- 【LOB】Oracle Lob管理常用sqlOracleSQL