前言
在MySQL8.0之前的版本中,innodb
btree索引中的記錄都是嚴(yán)格按照的key的順序來(lái)存儲(chǔ)的,但有些時(shí)候當(dāng)我們需要倒序掃描時(shí),效率就會(huì)很低。為了解決這個(gè)問(wèn)題,從MySQL8.0版本開始支持在索引Key中倒序存儲(chǔ)。你可以按照實(shí)際的sql負(fù)載來(lái)決定如何創(chuàng)建索引,例如你的查詢中有Order
by a desc, b asc,就可以創(chuàng)建索引key(a desc, b asc),而在8.0之前的版本中則可能需要代價(jià)比較大的filesort來(lái)進(jìn)行,
此外逆序掃描Btree也有額外的開銷,例如掃描時(shí)的page切換,page內(nèi)掃描,都比正序掃描的開銷要大。
本文簡(jiǎn)單介紹下用法,并分析下對(duì)應(yīng)的代碼實(shí)現(xiàn)
以下基于當(dāng)前最新MySQL8.0.13版本
使用
其實(shí)對(duì)應(yīng)的語(yǔ)法一直是存在的,只是沒(méi)有做具體的實(shí)現(xiàn),直到8.0版本才真正實(shí)現(xiàn),使用也很簡(jiǎn)單,在
熱門工具 換一換
