DATETIMEフィールドの上にあるDATEフィールドを使用すると、パフォーマンスに大きな違いがあります。 4.000.000を超えるレコードを含むテーブルがあり、テスト目的で、両方に独自のインデックスを持つ2つのフィールドを追加しました。 1つはDATETIMEを使用し、もう1つはDATEを使用します。
MySQLクエリキャッシュを無効にして、適切にテストし、1000xの同じクエリをループできるようにしました:
SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
日時インデックス:197.564秒。
SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
日付インデックス:107.577秒。
日付インデックス付きフィールドを使用すると、パフォーマンスが 45.55%!!向上します。
したがって、テーブルに大量のデータが含まれることが予想される場合は、日付と時刻を独自のインデックスで区切ることを検討してください。