資料庫索引

2021-08-21 03:28:18 字數 825 閱讀 5150

資料庫索引:索引的本質就是排序,將建立的索引列進行鍵值排序,建立索引可以提高檢索的效能,但是會降低修改的效能,因為檢索效能與修改效能是矛盾的。

查詢資料避免使用:select *:這種方式雖然可以簡化開發,但是會造成覆蓋索引這樣的優化手段失效,也會增加磁碟i/o,記憶體和cpu的開銷等,所以盡量使用select t.id, t.name ...的查詢sql,因為這種形式能更好的利用索引。

假設:某個表中,資料有n條,百萬級以上

①通過id(唯一)檢索,需要訪問n/2條資料才能找到資料,不過id是經過排序的,那麼就可以建立二叉樹用二分法查詢,只要比較log2 n次,大大提高了效能。(在乙個有1w條資料的表中,查詢name=「yk」的資料(假設有100個人叫yk),使用explain select * from table where name=「yk」,①如果這個字段沒有索引,那麼結果檢測出來的rows(查詢的行數)=1w。②如果這個字段建立了索引,那麼結果檢測出來的rows=100。檢索的效果大大增加)

結論:建立索引之後,再次查詢,會通過yk的鍵值來查詢資料,索引通過鍵值的排序來定位資料的位置,因此直接定位到那100條資料,所以相比從整張表中掃瞄資料,速度快得多。

②什麼情況建立索引?

1、經常要搜尋的列上建立索引,可以加快搜尋的速度。

2、在作為主鍵的列上。

3、在經常用作連線的列上,一般都是外來鍵,可以加快連線速度。

4、在經常需要根據範圍搜尋的列上加上索引,因為索引已經排序,其指定的範圍是連續的。

5、在經常需要排列的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序的速度。

6、在使用在where後的列上加上索引,加快條件的判斷速度。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

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

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

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...