MySQL資料庫 索引篇部分(待增補)

2021-07-10 19:15:34 字數 1815 閱讀 4084

當mysql資料量和訪問量不大時,訪問速度可以;但當資料量和訪問量劇增時,明顯就會發現

訪問速度

很慢,甚至

down

掉,這裡提出mysql優化

。其中優化mysql

的乙個重要環節:為

資料庫建立正確合理的索引(

如下圖所示建立的索引

如果沒有索引,執行查詢時

mysql

必須從第乙個記錄開始掃瞄整個表的所有記錄

,直至找到符合要求的記錄。表裡面的記錄數量越多,操作代價就越高。

如果作為搜尋條件的列上已經建立了索引,mysql

無需掃瞄任何記錄即可迅速得到目標記錄所在的位置。

也就是說索引可以大大減少資料庫管理系統查詢資料的時間。

索引的優點:

1.通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

2.可以大大加快資料的檢索速度----建立索引的最主要原因。

3.可以加速表和表之間的連線----在實現資料的參考完整性方面特別有意義。

4.在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排

序的時間。

索引的缺點:

1.建立索引和維護索引要耗費時間,耗費的時間隨著資料量的增加而增加。

2.除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立

聚簇索引

,需要的空間就會

更大。3.當對表中的資料進行增加、刪除和修改的時候

,索引也要動態的維護,降低資料的維護速度。

建立和使用索引

注意事項:

1.索引要建立在經常進行s

elect

操作的字段上

。這是因為,如果這些列很少用到,那麼有無索引並不能明顯改變查詢速度。相反,由於增加了索引

,反而降低了系統的維護速度和增大了空間需求。

2.索引要建立在值比較唯一的字段上

。這樣做才是發揮索引的最大效果。比如主鍵的

id欄位,唯一的名字

name

欄位等。如果索引建立在唯一值比較少的字段,比如性別

gender

字段,索引幾乎沒有任何意義。

3.對於那些定義為

text

、image

和bit

資料型別的列不應該增加索引

。因為這些列的資料量要麼相當大,要麼取值很少。

4.當修改效能遠遠大於檢索效能時,不應該建立索引

。修改效能和檢索效能是互相矛盾的。當增加索引時,會提高檢索效能,但是會降低修改效能。當減少索引時,會提高修改效能,降低檢索效能。因此

,當修改效能遠遠大於檢索效能時,不應該建立索引。

5.

where

和join

中出現的列需要建立索引。

6.在以萬用字元% 和

_ 開頭作查詢時,mysql

索引是無效的

。但下面建立的索引是有效的:

select * from tbl1 where name like '***%',

7.正確建立

mysql

索引很重要

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引白話篇

索引 這個名字,想必大家都耳熟能詳了,眾所周知,索引最大的用途就是提公升資料庫的查詢速度。或許,你會說,我曾經自己動手按書上講的方法試驗了一番,可是沒有感覺有多大速度的提公升呢?這完全是可能的,因為索引就像是一門非常厲害的武功招式,如果我們想發揮其最大的功力,光憑招式的純熟是遠遠不夠的,我們還必須同...

資料庫總結 索引篇

索引是定義在儲存表的基礎上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的索引項組成,每一索引項又由兩部分構成。即索引欄位和行指標。由表中某些列通常是一列中的值串接而成。索引中通常儲存了索引欄位的每乙個值。指向表中包含索引字段值的記錄在磁碟上的儲存位置。儲存索引項...