當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就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
資料庫索引白話篇
索引 這個名字,想必大家都耳熟能詳了,眾所周知,索引最大的用途就是提公升資料庫的查詢速度。或許,你會說,我曾經自己動手按書上講的方法試驗了一番,可是沒有感覺有多大速度的提公升呢?這完全是可能的,因為索引就像是一門非常厲害的武功招式,如果我們想發揮其最大的功力,光憑招式的純熟是遠遠不夠的,我們還必須同...
資料庫總結 索引篇
索引是定義在儲存表的基礎上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的索引項組成,每一索引項又由兩部分構成。即索引欄位和行指標。由表中某些列通常是一列中的值串接而成。索引中通常儲存了索引欄位的每乙個值。指向表中包含索引字段值的記錄在磁碟上的儲存位置。儲存索引項...