MySQLでは、条件間の行の削除など、さまざまな理由でインデックスを使用することをお勧めします。 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
これにより、クエリの条件で頻繁に使用する場合は、日時列がインデックスの優れた候補になります。唯一の条件がBETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)
の場合 条件に他のインデックスがない場合、MySQLは全表スキャンを実行する必要があります。 すべてのクエリで。 30日間で生成される行数はわかりませんが、合計行数の約3分の1未満であれば、列にインデックスを使用する方が効率的です。
効率的なデータベースの作成に関するあなたの質問は非常に幅広いものです。正規化され、適切なすべての列にインデックスが付けられていることを確認してください(つまり、結合やwhere句で使用される列)。