mysql索引----7多列索引的順序

在下面這條sql語句裏

select * from it where userid = 4 and style =0 limit 100,10

我們必然是要創建 userid,style這索引來着。

但千萬不要創建(userid),(style)兩條索引,這樣的結果會導致,sql優化器選擇哪個索引都不好,優化器也可能會索引合併(就是使用多條索引,這本身就代表索引創建的不好。)

我們應該創建(userid,style)或者(style,userid)

那究竟應該選擇哪個呢?

一個通俗的原則是:選擇性較高的放在前面。

這個原則創造出來的索引可能不是最好的,但絕不是最差的。

我們這個例子裏,style的選擇性很低,只有5個值,所以應該創建(userid,style)

但有時候不一定會這樣做。比如因爲排序,因爲IO,或者其他。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章