where a=1 and b=1where b=1where b=1 order by time desc請(qǐng)問這三條sql 如何建索引只建一條怎么建
3 回答

夢(mèng)里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
b_time
btimea對(duì)于第一個(gè)查詢還是用不上a的index,只能用b的。
第2個(gè)和第3個(gè)都全能用了。
兩個(gè)的話就好弄了 ab 和btime。

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
一條的話 ... Index( b, time, a ) 聯(lián)合索引 ...
MySQL 優(yōu)化器不會(huì)自動(dòng)調(diào)整 WHERE 的先后順序 ... 所以需要你自己寫的時(shí)候注意 ...

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
具體問題具體分析吧,mysql版本之間的差別比較大,需要針對(duì)不同的版本要看對(duì)索引的支持如何,
這三條查詢中,b字段的查詢頻率最高,所以b字段要加入到索引中,多列索引中,索引的列順序很重要。
只想建立單個(gè)索引,index(b,time)最合適。
“where a=1 and b=1”應(yīng)該改為“where b=1 and a=1”
添加回答
舉報(bào)
0/150
提交
取消