私は約15の異なる列を持つ数億レコードのテーブルを持っています。データは、タイムスタンプ、追跡される車両上のID、および速度記録と共に、速度記録の中でも特に重要である。 1台の車両に何十万もの速度記録を持たせることができ、約40,000台の車両が存在する。SQLite max()クエリを最適化する
1台の車両ごとに最高速度記録を探したいと思います。
だけで照会:
SELECT userid, max(speed) from SpeedReadings group by userid
は多くの時間がかかるので、私はこれを最適化したいです。私の最初の考えは、ユーザーIDと速度でインデックスを作成することです。クエリ内の変数とインデックステーブルの順序は重要ですか?データベースがないようにグループ分けを最適化するための最善の方法は、ユーザーIDによってソートされたリストに格納されたデータを持つことである
SELECT userid, max(speed) from SpeedReadings group by userid
SELECT distinct userid, max(speed) from SpeedReadings
ありがとうございます。私は、グループが正しい結果をレンダリングすることを期待しています。 – bjornasm
ところで、カバリングインデックスについて言及すると、ユーザIDとスピードの両方を持つマルチカラムインデックスを意味します。 – bjornasm
はい、それは私がその文章の最初の部分に書いたものです。 –