センサーの読み取り値を保持する単純な SQLite データベースをセットアップしています。テーブルは次のようになります。
sensors
- id (pk)
- name
- description
- units
sensor_readings
- id (pk)
- sensor_id (fk to sensors)
- value (actual sensor value stored here)
- time (date/time the sensor sample was taken)
このアプリケーションは、約 30 の異なるセンサーから 1 か月あたり約 100,000 のセンサー読み取り値をキャプチャします。すべてのセンサー読み取り値をできるだけ長く DB に保持したいと考えています。
ほとんどのクエリはフォームになります
SELECT * FROM sensor_readings WHERE sensor_id = x AND time > y AND time < z
このクエリは通常、約 100 ~ 1000 件の結果を返します。
問題は、上記のクエリに時間がかかりすぎる (標準の PC で数秒以上かかる) 前に、sensor_readings テーブルをどれだけ大きくできるかということです。
センサーごとに個別の sensor_readings テーブルを作成することが 1 つの解決策になる可能性があることはわかっていますが、不要な場合はこれを避けたいと思います。この DB スキーマを最適化する他の方法はありますか?