資料庫偽雜湊Hash索引的建立和使用(理論 實戰)

2021-10-04 17:50:04 字數 746 閱讀 6087

適用場景

適用於給乙個varchar型別的字段建立索引。比如說類的全路徑,url等長字串的字段。

com.***.aaa.bbb.ccc.yyy.zzz

其中大寫的zzz就是類名。

像這種長字串的,建立字首索引區分度也不大,尤其一般字首索引只使用10個字元,那麼區分度可以說非常小。

所以,這種情況下,就可以考慮使用偽雜湊索引。我們可以建立乙個短的帶有 b+tree索引的字段。

innodb也支援hash索引的,但是我們必須啟用(也就是說通常情況下是不啟用的),開啟後,hash索引的建立由innodb儲存引擎引擎自動優化建立,我們干預不了

索引的使用原則

索引字段盡量使用數字型(簡單的資料型別)

若只含數值資訊的字段盡量不要設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷.這是因為引擎在處理查詢和連線時會逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了

盡量不要讓字段的預設值為null

在mysql中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計資訊以及比較運算更加複雜.

建立偽hash索引的字段並建立組合索引

因為我目前有一張表,有個應用id,類路徑的字段,還有方法名的字段,然後業務需要根據此3個字段進行group by操作來區分唯一性,以及查詢時候使用。所以,首先需要建立乙個組合索引。

根據我們上面的原則:

資料庫中的索引技術 雜湊索引

1 雜湊索引 雜湊索引 hash index 基於雜湊表實現,只有精確匹配索引所有列的查詢才有效。對於每一行資料,儲存引擎都會對所有的索引列計算乙個雜湊碼 hash code 雜湊碼是乙個較小的值,並且不同鍵值的行計算出來的雜湊碼也不一樣。雜湊索引將所有的雜湊碼儲存在索引中,同時在雜湊表中儲存指向每...

資料庫建立索引

建立索引 學生學號建立聚集索引 create unique clustered index ix student id on student studentid 規則 create unique clustered nonclustered index 索引名 on 表名 檢視名 索引列名,asc ...

資料庫建立索引

建立索引 目的 加快查詢速度 create unique cluster index 索引名 on 表名 列名 次序 列名 次序 unique標識唯一索引,cluster表示聚簇索引 索引可以建立在該錶的一列或多列上,各列名之間用逗號隔開,次序表示索引值的排列次序,asc表示公升序 預設 desc表...