リクエストごとに1回だけ実行されるこのクエリがあります。
SELECT SUM(numberColumn) AS total, groupColumn
FROM myTable
WHERE dateColumn < ? AND categoryColumn = ?
GROUP BY groupColumn
HAVING total > 0
myTable
列数が12未満で、最大500万行まで成長する可能性がありますが、本番環境では約200万行になる可能性があります。クエリで使用されるすべての列は、を除いて数値でdateColumn
あり、とにインデックスがdateColumn
ありますcategoryColumn
。
データベースが適切に最適化されている場合、最新のサーバーでは、このクエリが5秒以内に500万行で実行されると期待するのは合理的でしょうか?
私が尋ねている理由は、500万のデータがなく、今後数年以内に200万に達することさえないからです。クエリが5秒以内に実行されない場合、どこにあるかを知るのは困難です。問題はあります。クエリが大きなテーブルに適していないか、データベースが最適化されていないか、サーバーが十分に強力でないことが原因でしょうか。SUM()
基本的にGROUP BY
、大きなテーブルを使用するのが妥当かどうかを知りたいです。
ありがとう。