0
を最適化する必要があるクエリです:DATE_ADD()を含むmysqlクエリを最適化する方法は?ここ
Scans: 527676 records...
Returns: 496 records...
SELECT * FROM customers c
WHERE DATE_ADD(c.`custdate` ,INTERVAL -5 HOUR) BETWEEN '2011-09-14 00:00:00' AND '2011-09-14 23:59:59'
AND c.`custtype`='L'
これはDATE_ADDを使用しなくても同じです。
Scans: 801 records...
Returns: 481 records...
SELECT * FROM customers c
WHERE c.`custdate` BETWEEN '2011-09-14 00:00:00' AND '2011-09-14 23:59:59'
質問は、私はDATE_ADD()関数を使用してこのクエリを最適化する方法であります? DATE_ADDを使用せずにインデックスを取得し、クエリは正常です。
これに関するヘルプをお待ちしています。
おかげで、
Raheel
が完全に合意します - あなたは、問題のフィールド上で機能を実行しているときのMySQLはインデックスを使用することはできません、したがって、フィールドの代わりにフィルター基準で機能を実行しようと常にしてください。 MySQLは利用可能なインデックス –
...を使用することができます。さらに、BETWEEN句の各値に対して "DATE_ADD"機能を実行することは可能です。例えば。 "c.'custdate BETWEEN DATE_ADD( '2011-09-14 00:00:00'インターバル5時間)とDATE_ADD( '2011年5月14日23時59分59秒'インターバル5時間) –
はい、動作します。あなたはGMT-5と同様の結果を得るためにbetween節の両方の日付に5時間を追加することを提案するので、date_addを使用してすべてのクエリをリファクタリングできるようにdatetimeに5時間を追加する便利な関数を知っていますか? –