假设我有以下索引(来自SHOW INDEXES的输出):
Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinaity, etc etc
'tn', 1, 'Index1', 1, 'fid', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index1', 2, 'obj_type', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index1', 3, 'obj_id', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index1', 4, 'rule', 'A', 366, , '', '', 'BTREE', '', ''
请注意,Index1中包含4列......
这样做是否可以让我获得一个列只有一个索引(比如fid)的所有性能优势?
换句话说,在一个索引中拥有这样的多列,而不是每个索引只有一列,有什么区别以及什么是好处/挫折.... IE的设置与上面的设置有什么不同
下面的设置Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinaity, etc etc
'tn', 1, 'Index1', 1, 'fid', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index2', 1, 'obj_type', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index3', 1, 'obj_id', 'A', 366, , '', '', 'BTREE', '', ''
'tn', 1, 'Index4', 1, 'rule', 'A', 366, , '', '', 'BTREE', '', ''
请注意,在上面的场景中,每列都有自己的索引
哪一个会更快/更有效?
答案 0 :(得分:1)
在某些情况下,多列索引可能会替换单独的单个索引。这实际上取决于知道如何查询表格,这将决定什么是最合适的。
如果您有关于列A,B和C的索引(按此顺序)。如果您在WHERE子句中使用以下任何字段组合,则将获得优化的索引性能。
A
A, B
A, B, C
请注意,为了在查看列B或C时使用索引,还必须在索引中使用其左侧的其他列。这些也必须以索引的正确顺序引用。
有关详细信息,请查看此处:
http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html