MySQL - multiple column index

后端 未结 1 1009
名媛妹妹
名媛妹妹 2021-02-20 11:52

I\'m learning MySQL index and found that index should be applied to any column named in the WHERE clause of a SELECT query.

Then I found Multiple Column Index vs Multipl

1条回答
  •  情书的邮戳
    2021-02-20 12:41

    General rule of thumb for indexes is to slap one onto any field used in a WHERE or JOIN clause.

    That being said, there are some optimizations you can do. If you KNOW that a certain combination of fields are the only one that will ever be used in WHERE on a particular table, then you can create a single multi-field key on just those fields, e.g.

    INDEX (field1, field2, field5)
    

    v.s.

    INDEX (field1),
    INDEX (field2),
    INDEX (field5)
    

    A multi-field index can be more efficient in many cases, v.s having to scan multiple indexes. The downside is that the multi-field index is only usable if the fields in question are actually used in a WHERE clause.

    With your sample queries, since element and field_id are in all three indexes, you might be better off splitting them off into their own dedicated index. If these are changeable fields, then it's better to keep it their own dedicated index. e.g. if you ever have to change field_id in bulk, the DB has to update 3 different indexes, v.s. updating just one dedicated one.

    But it all comes down to benchmarking - test your particular setup with various index setups and see which performs best. Rules of thumbs are handy, but don't work 100% of the time.

    0 讨论(0)
提交回复
热议问题