データベースの場合、3,000 行のデータは大きくありません。実際、それは小さい側にあります。
クエリ:
SELECT *
FROM database.tableName
WHERE status < 4 ;
各行が非常に大きい場合 (たとえば 10k) でない限り、3,000 行でかなり高速に実行する必要があります。いつでもインデックスを付けstatus
て、実行を高速化できます。
cassi.iup によって提案されたクエリは、より理にかなっています。
SELECT *
FROM database.tableName
WHERE status < 4 AND DATE < DATE_SUB(NOW(), INTERVAL 2 MONTHS);
の複合インデックスを使用すると、パフォーマンスが向上しstatus, date
ます。私の質問は、ステータスが 4 のすべての行が必要ですか、それとも過去 2 か月のステータスが 4 のすべての行が必要ですか? 最初のケースでは、クエリを継続的に変更する必要があります。あなたはより良いでしょう:
SELECT *
FROM database.tableName
WHERE status < 4 AND DATE < date('2013-06-19');
(これを書いている時点で。)