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つの列が含まれていることに注意してください...

これを行うことで、1つの列に1つのインデックス(たとえばfid)を使用することによるすべてのパフォーマンス上の利点を得ることができますか?

言い換えると、インデックスごとに1つの列しかないのではなく、1つのインデックスにそのような複数の列があることの違いと利点/欠点は何ですか...つまり、上の設定と下の設定の違いは何ですか?

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 に答える