SQL索引的概念

2021-09-22 12:36:14 字數 1328 閱讀 2307

mysql索引的概念

mysql官方對索引的定義為:索引(index)是幫助mysql高效獲取資料的資料結構,通俗來講索引就好比書本的目錄,加快資料庫的查詢速度。

舉個簡單的例子,見下圖:

注意:此例子的中索引結構與資料庫中的索引結構差距很大

user表有3個字段(id、name、age),儲存8條記錄,當我們查詢age為20的記錄時,sql語句 select * from user where age=20;

1 在沒有索引情況下需要依次遍歷表裡的記錄,第6次時找到age=20的記錄;

2 如果我們在age列新增索引,只需3次,就可以找到age=20的記錄。

正如官方所說:索引是乙個資料結構;

通過語句show index from tablename檢視索引

可以根據index_type看出該索引由btree資料結構實現;除了btree,還有hash、fulltext、rtree;

索引的作用

- 提高查詢效率

- 消除資料分組、排序

- 避免「回表」查詢(索引覆蓋)

- 優化聚合查詢

- 用於多表join關聯查詢

- 利用唯一性約束,保證資料唯一性

- inndb行鎖實現

索引的***

- 增加i/o成本

- 增加磁碟空間

- 不合適的索引或索引過多,會降低增刪改的效率

索引的分類

1 儲存結構

- btree:innodb & myisam

- hash:heap,ndb,innodb ahi

- fractal tree:tokudb

- rtree

- fulltext

2 資料的儲存方式

- 聚集索引:聚簇索引的順序就是資料的物理儲存順序,索引與資料存放在同乙個檔案中。

- 非聚集索引:非聚簇索引的順序與資料的物理儲存順序不同,索引與資料存放在不同的檔案。

3 應用層次

-  單列:主鍵索引、唯一索引、普通索引

-  多列:復合索引

索引的概念

索引的目的是什麼?1.快速訪問資料表中的特定資訊,提高檢索速度 2.建立唯一性索引,保證資料庫表中每一行資料的唯一性。3.加速表和表之間的連線 4.使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間 索引的缺點 建立索引和維護索引需要耗費時間,這個時間隨著資料量的增加而增加 索引需...

索引的概念,何時加索引?

索引就是乙個排好序的,便於查詢的資料結構,就是乙個b 2叉數,索引按儲存分為聚集索引和非聚集索引 如何加索引 為了確定優化的語句,先開慢查詢或使用show processlist 查一下,找出慢的語句,通過explain解釋執行計畫,根據解釋計畫判斷需不需要加索引,那個欄位加索引 何時加索引?索引優...

oracle 索引的概念

索引的概念 官方定義 索引是建立在表的一列或多列上的輔助物件。可以加快對錶的訪問速率。索引類似書的目錄。轉 索引的分類 邏輯上 single column 單行索引 concatenated 多行索引 unique 唯一索引 nonunique 非唯一索引 function based函式索引 do...