假設(shè)有這么個(gè)sql查詢 select * from table where id=xxxx order by time這張table上有兩個(gè)索引,一個(gè)是id聚集索引,還有一個(gè)是time非聚集索引。那么我們假設(shè)強(qiáng)制它走time非聚集索引,那么執(zhí)行這個(gè)sql的第一步就是直接把排序好的葉子節(jié)點(diǎn)拿出來。這個(gè)葉子節(jié)點(diǎn)的data域存放的是主鍵名,即id。那么問題來了,接下來要匹配where條件了,是直接在time索引的葉子節(jié)點(diǎn)的data域上來where匹配id,還是拿到id再去通過主鍵索引拿到行數(shù)據(jù)來where匹配id呢?思考:select * from table where time=xxxx order by time ,會(huì)怎么樣?如果上面那個(gè)問題的答案是前者(直接在time索引的葉子節(jié)點(diǎn)的data域上來where匹配id),那這句sql和上面那句sql的查詢效率應(yīng)該是差不多的?
mysql innodb 索引查詢的一個(gè)疑問?
人到中年有點(diǎn)甜
2018-10-24 18:49:39