什麼是索引?
索引是為了加速對錶中的資料檢索而建立的一種分散的儲存結構。索引是針對於表而建立的,他是由資料頁面外的索引頁面組成,每個索引頁面都會包含邏輯指標,以便加速檢索物理資料。
索引的作用?
當表中有大量的記錄時,若要對錶進行查詢,第一種搜尋資訊方式是全表搜尋,將所有記錄一一取出,和查詢的條件一一對比,然後滿足條件的記錄,這樣做會大量消耗資料庫的系統時間,並且造成大量磁碟的i/o操作;如果我們建立索引,然後在索引中查詢符合條件的索引值,通過儲存在索引中的rowid(相當於頁碼)快速找到表中對應的記錄。在資料庫系統中建立索引的主要作用:
(1)快速取資料
(2)保證資料記錄的唯一性
(3)實現表與表之間的參照完整性
(4)在使用order by、group by子句進行資料檢索時,可以減少排序和分組時間。
雖然索引可以加快資料檢索速度,保證每一行資料的唯一性和完整性,但是建立索引也是需要物理空間的,並且對於表的增加、刪除和修改的時候也需要對索引進行動態的維護,降低了資料的維護速度。
索引的型別?
根據資料庫ide功能可以分為:普通索引、唯一索引、主鍵索引和聚集索引。
什麼情況下設定索引?
(1)定義主鍵的資料列一定要建立索引。
(2)定義有外來鍵的資料列一定要建立索引
(3)對於經常查詢的資料列。
(4)對於需要在指定範圍內快速或者頻繁查詢的資料將列。
(5)對於經常使用where子句的資料列
(6)經常出現在關鍵字order by、group by、distinct後面的字段建立索引。
什麼情況下不要設定索引?
(1)對於查詢中很少涉及的列、重複值比較多的列
(2)對於定義為text、imag和bit資料型別的列
(3)對於經常訪問的列
(4)限制表上的索引數目。對於乙個需要大量更新操作的表,一般不超過三個,最多不超過5個。
(5)對於復合索引,最好將使用頻度高的放在前面。
如何建立索引?
create [unqiue][clustered|nonclistered] index index_name on(index_property);
unique:唯一索引
clusterde:聚集索引
nonclustered:非聚集索引
index_name:索引名稱,自定義的
table_name:表的名稱
view_name:檢視的名稱
index_property:列屬性。
mysql索引基礎 Mysql 索引基礎
什麼是索引?為什麼要建立索引?索引,其實就是目錄。索引,用於快速找出在某個列中有某個特定值的行。不使用索引,mysql必須從第一條記錄開始查詢整張表,直到找出相關的行,那麼表越大,查詢資料所花費的時間就越多。假如表中查詢的列有乙個索引 目錄 mysql能夠快速定位到達乙個位置去搜尋資料檔案,而不必查...
mysql索引基礎
1.建立索引 alter table table name add index index name column list alter table table name add unique index name column list alter table table name add pri...
MySQL索引基礎
索引是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵。然而索引經常被誤解,好的索引能夠輕易將查詢效能提高幾個數量級,糟糕的索引則會導致各種問題。看一本書的時候,一般會先看書的目錄,然後找到對應的頁碼。在mysql中,儲存引擎用類似的方法使用索引,先在索引中找到對應值,然後根據匹配...