b-tree索引
1. 聚簇索引
2)資料訪問更快
3)使用覆蓋索引掃瞄的查詢可以直接使用頁面節點中的鍵值
4)極大的提高密集型應用的效能
缺點:1)插入速度嚴重依賴於插入順序。
2)更新索引列的代價很高
3)容易造成頁**
4)二級索引變大,包含主鍵
5)二級索引需要兩次查詢,一次查詢主鍵,一次通過主鍵查詢資料行
2. 覆蓋索引
乙個索引包含所有需要查詢的字段的值,我們稱之為覆蓋索引。又叫三星索引
優點:1)能夠極大的提公升效能。
2)對於innodb還能避免二次查詢
3)可以極大的提高密集型應用
缺點:1)占用較大的索引空間
2)可能會造成索引冗餘
可以使用延遲關聯的方法達到覆蓋查詢的效果。
3. 字首索引
只索引開始的部分字元稱為字首索引。因為索引過大,用來節約索引空間,從來提公升索引效率。但同時會降低索引的選擇性。索引的選擇性是指該字段中 不重複值/總記錄數。選擇性高的索引可以讓mysql在查詢時過濾掉更多的行。訣竅在於要選擇足夠長的字首保持較高的選擇性。
缺點:無法用字首索引做排序和覆蓋索引
4. 多列索引
建立合適順序的多列索引。在大多查詢中,對於條件的限制不止一列,這個時候就需要建立合適的多列索引,最優先的原則是避免隨機io和排序。在不考慮這兩個的情況下,選擇性高的排在前面通常是很好的。
特例:對於特殊的id,如管理員賬號。擁有全部的使用者id,一般的查詢對於普通使用者只是查出幾十條資訊,而管理員賬號則會查出全部的資料造成資料庫卡死,這種情況,則需要在程式裡對這類特殊的賬號分組控制,不允許進行類似的查詢。
雜湊索引
只有精確匹配索引所有列的查詢才有效。innodb的乙個特性就是自適應雜湊索引
雜湊是一種非常快的查詢方式,一般情況下時間複雜度為o(1).常用語join(連線)操作。mysql的memory儲存引擎預設的索引型別為hash索引,而innodb則提出了另一種實現方法,自適應hash索引。
innodb會監控對錶上的索引的查詢,如果觀察到建立hash索引可以帶來速度上的提公升,則建立雜湊索引,稱為自適應雜湊索引。自適應雜湊索引通過緩衝池中的b+樹來構造而來,因此建立的速度很快。而且不需要對整個表建立,而是根據訪問的頻率和模式為某些頁來建立索引。
空間資料索引(r-tree)
全文索引
資料庫優劣
mysql 優點 1.支援5000萬條記錄的資料倉儲 2.適應於所有的平台 3.是開源軟體,版本更新較快 4.效能很出色。純粹就效能而言,mysql是相當出色的,因為它包含乙個預設桌面格式myisam。myisam 資料庫與磁碟非常地相容而不占用過多的cpu和記憶體。mysql可以執行於window...
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...