oracle創建索引


數據庫索引是為了提高查詢速度的一種數據結構。

索引的創建語句

索引的創建語句非常簡單。

CREATE INDEX 索引名 ON 表名(列名);

除了單列索引,還可以創建包含多個列的復合索引。

CREATE INDEX 索引名 ON 表名(列名1, 列名2, 列名3, ...);

刪除索引也非常簡單。

DROP INDEX 索引名;

查看某個表中的所有索引也同樣簡單。

SELECT * FROM ALL_INDEXES WHERE TABLE_NAME = '表名'

還可以查看某個表中建立了索引的所有列。

SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名'

索引的建立原則

1.索引應該建立在WHERE子句中經常使用的列上。如果某個大表經常使用某個字段進行查詢,並且檢索的啊行數小於總表行數的5%,則應該考慮在該列上建立索引。

2.對於兩個表連接的字段,應該建立索引。

3.如果經常在某表的一個字段上進行Order By的話,則也應該在這個列上建立索引。

4.不應該在小表上建立索引。

索引的優缺點

索引主要是為了提高數據的查詢速度,這就是索引的優點。但是當進行增刪改的時候,會更新索引。因此索引越多,增刪改的速度就會越慢,因為有一個維護索引的過程。創建索引之前需要權衡該字段是否經常發生增刪改操作,否則可能會帶來負優化的問題。

索引的優點

1.很大地提高了數據的檢索速度。

2.創建唯一索引能保證數據庫表中每一行數據的唯一性(唯一性約束)。

3.提高表與表之間的連接速度。

索引的缺點

1.索引需要占用物理空間。

2.當對表中的數據進行增加、刪除和修改的時候,索引也要動態地進行維護,降低數據的維護速度。

關於查詢優化器

當Oracle拿到SQL語句的時候,會使用查詢優化器去分析該語句,並根據分析結果生成查詢執行計划。也就是說,數據庫是執行的查詢計划,而不是SQL語句。

查詢優化器有RBO(Rule-Based-Optimizer,基於規則的查詢優化器)和CBO(Cost-Based-Optimizer,基於成本的查詢優化器),其中基於規則的查詢優化器在10g的版本中徹底消失了。原因是因為RBO最后的查詢都是全表掃描,而CBO會根據統計信息選擇最優的查詢方案。

因此,CBO一旦發現有索引的存在,並且這個索引能幫助提高查詢速度,就是使用通過索引進行查詢的方法。

 

"不管你在經歷着怎樣的艱難,我只願你今后的日子不會那么坎坷。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM