反向索引與平時的常用索引不同的是,它將要增加索引的列的數據按字節顛倒(相當於reverse) 存放,比如要存的數據為:
12345
12346
12347
12348
反轉為:
54321
64321
74321
84321
這樣存的好處是:解決樹的傾斜問題,而且可以解決在大量IO操作的情況下,防止硬盤在某個區域操作過於頻繁,引起"熱點"問題。
不適用的情況:范圍查詢。
適用的情況:數據是按順序增長,如ID等。
名詞解釋:
樹的分支:因為索引一般是按樹這個數據結構來組織,所以有很多分支,把不同類別或范圍的數據存放在分支裡,在符合條件的分支裡查詢比在全表查詢效率高很多。
樹的傾斜:樹的某個分支過與龐大,而其他分支內容卻很少,這樣的索引非常不健康的,查詢速度也很慢,如上面的示例數據,都在10000-20000的分支,而20000-30000或者以上的分支是空的。反轉後把這些數據均勻分布到不同的分支,可以使索引更加健康,也更有效率。
熱點問題:由於系統在表數據的增刪改查的同時,同時要承擔索引開支,而這主要是硬盤的IO操作,如果樹是傾斜的,而且數據的增加是按一定順序增長的,這種情況會導致硬盤對某一固定區域操作頻繁,會出現熱點問題,而且出現瓶頸。