資料庫索引優劣

2021-08-21 05:26:32 字數 1262 閱讀 1184

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就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...