0

以下のクエリは、20lacsレコードから実行して2.5秒以上かかります。

select lid、nid、sum(nview)as view_cnt
nvから
WHEREふた=1
GROUP BY nid
注文するview_cntdesc
制限20;

可能なキーをインデックスとして更新しました。このクエリを最適化するのを手伝ってください

idselect_typeテーブルタイプpossible_keyskeykey_len ref rows Extra
1 SIMPLE nv ref lid lid 4const406282「どこで使用するか;一時的に使用する;ファイルソートを使用する」
4

2 に答える 2

1

クエリで使用されるすべての列にインデックスを追加してみることができます。

ALTER TABLE nv ADD INDEX lnv(lid,nid,nview)

そのため、mysql は、行の検索にのみインデックスを使用するのではなく、インデックスからの列の値を使用します。using index追加の説明列に追加が表示されるはずです。おそらくクエリを少し高速化できますが、あまり期待しないでください。この場合のファイルソートは、テーブルスキーマを変更しないと避けられません。

このインデックスを使用することにした場合はlid、複合インデックスを蓋のルックアップにも使用できるため、単一の列のインデックスを安全に削除できます。

于 2012-04-26T14:52:30.820 に答える
0

蓋の列のみにインデックスを付けました。nid 列にインデックスを追加して、クエリの実行時間を確認できますか

于 2012-04-26T14:07:26.700 に答える