4

order-bygroup-byを使用するクエリがあります

count(*)、filed2を選択します
table1からfield1>xgroup by filed2 order by count(*)desc

このクエリに最適なインデックスは何ですか。
sholud I index filed1、field2 seprateまたはtogether?

4

1 に答える 1

-1

2つの異なる順序で両方の列を持つインデックスを作成する必要があります

ALTER TABLE table1 ADD INDEX field1_field2_ndx (field1,field2);
ALTER TABLE table1 ADD INDEX field2_field1_ndx (field2,field1);

両方の列でインデックスを作成すると、クエリがインデックスを通過してクエリを満たすためだけになるため、個別のインデックスを作成しないでください。テーブルに触れる必要はありません。

個別のインデックスを作成した場合でも、クエリオプティマイザは2列のインデックスを選択します。

2つのインデックスができたので、クエリオプティマイザを信頼して正しいインデックスを選択します。クエリに基づいて、EXPLAINプランはfield2_field1_ndxインデックスを選択します。

于 2013-01-16T21:15:41.123 に答える