は、私が理解できないんだけど、問題を抱えている... 私は2つのクエリ(データベースがすべてのCDRデータに一つだけのテーブルで、MySQLのです)があります。アスタリスクは
を0.05秒と別の1で実行SELECT * FROM cdr WHERE userfield LIKE 'audio:%'
AND (calldate >= '2016-10-26 00:00:00'
AND calldate <= '2016-10-26 23:59:59')
AND duration > 8
ORDER BY uniqueid DESC LIMIT 200 OFFSET 0;
:
SELECT * FROM cdr WHERE userfield LIKE 'audio:%'
AND (calldate >= '2016-10-26 15:00:00'
AND calldate <= '2016-10-26 16:00:00')
AND duration > 8
ORDER BY uniqueid DESC LIMIT 200 OFFSET 0;
39.12秒で実行されます! (唯一の相違点はcalldateフィールドにあることに注意してください)
私は実際にMySQLのパフォーマンスについてよく知らないので、インデックスの問題がどこから始まるか分かりません。
おかげで、EXPLAINは良いスタートですが、この場合には一つだけのテーブルですので、私は、実行計画と多くを果たしcan't。 – Soborno
私はこれまでずっとEXPLAINを使用していませんでしたが、このケースでは行が1つしかなく、possible_keysとkeysフィールドが現在のインデックス(calldateカラムのもの)と一致するため、実際にはわかりませんどうすればいいですか(「どこで使用するか、filesortを使用する」と書かれているフィールドはありません) – Soborno
「ファイルポートを使用する」とは、テンポラリテーブルのメモリに空きがないことを意味します。ソートのためにバッファスペースを増やしました(テーブルエンジンタイプに依存します)。 – arheops