0

假设我有以下索引(来自 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', '', ''

请注意,在上述场景中,每一列都有自己的索引

哪一个会更快/更高效?

4

1 回答 1

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

于 2012-09-17T16:23:36.290 回答