一個慢查詢引發的思考 selectcount(*)fromtaskwherestatus=2 and operator_id=20839 and operate_time>1371169729 and operate_time<1371174603 and type=2; 系統使用者反應有一個功能越來越慢,于是工程師找到了上面的SQL。 并且興致沖沖的找到了我,“這個SQL需要優化,給我把每個字段都加上索引” 我很驚訝,問道“為什么需要每個字段都加上索引?” “把查詢的字段都加上索引會更快”工程師信心滿滿 “這種情況完全可以建一個聯合索引,因為是最左前綴匹配,所以operate_time需要放到最后,而且還需要把其他相關的查詢都拿來,需要做一個綜合評估。” “聯合索引?最左前綴匹配?綜合評估?”工程師不禁陷入了沉思。 多數情況下,我們知道索引能夠提高查詢效率,但應該如何建立索引?索引的順序如何?許多人卻只知道大概。其實理解這些概念并不難,而且索引的原理遠沒有想象的那么復雜。