在下面這條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,或者其他。