第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

mysql innodb 索引查詢(xún)的一個(gè)疑問(wèn)?

mysql innodb 索引查詢(xún)的一個(gè)疑問(wèn)?

德瑪西亞99 2018-10-01 10:11:37
假設(shè)有這么個(gè)sql查詢(xún) 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)拿出來(lái)。這個(gè)葉子節(jié)點(diǎn)的data域存放的是主鍵名,即id。那么問(wèn)題來(lái)了,接下來(lái)要匹配where條件了,是直接在time索引的葉子節(jié)點(diǎn)的data域上來(lái)where匹配id,還是拿到id再去通過(guò)主鍵索引拿到行數(shù)據(jù)來(lái)where匹配id呢?思考:select * from table where time=xxxx order by time ,會(huì)怎么樣?如果上面那個(gè)問(wèn)題的答案是前者(直接在time索引的葉子節(jié)點(diǎn)的data域上來(lái)where匹配id),那這句sql和上面那句sql的查詢(xún)效率應(yīng)該是差不多的?
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

EXPLAIN 

SELECT `id`

FROM `table`

FORCE INDEX(`idx_time`)

WHERE `id`=xxx

    ORDER BY `time`

看Extra有Using index,說(shuō)明在索引內(nèi)部完成了查詢(xún),也就是不需要回表查詢(xún)

2條sql語(yǔ)句,不明白為什么要比較效率,第一條走主鍵效率肯定高;第二條語(yǔ)句,可能會(huì)掃描索引idx_time


查看完整回答
反對(duì) 回復(fù) 2018-10-09
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

怎么查看你查什么
第一條sql會(huì)在time索引找到滿(mǎn)足where條件的id,然后拿著id去主鍵聚集獲取其他字段
第二條同樣是在time索引上找到滿(mǎn)足where條件的id,然后再去獲取其他數(shù)據(jù)
不同的是,第一種情況會(huì)遍歷所有的time索引段,第二種只需要檢索滿(mǎn)足條件的time索引段即可

查看完整回答
反對(duì) 回復(fù) 2018-10-09
  • 2 回答
  • 0 關(guān)注
  • 853 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)