目的:
カウントの大きさが100,000〜10,000,000の場合に、2回の間に何かが発生した回数を取得します。
現在の実装:
- PostgreSQLの使用
- 各「インシデント」は、テーブルの個別の行として記録されます
列:
- インシデントタイプ
- 日時発生時刻
カウントを取得するためのクエリ(擬似コード):
COUNT rows WHERE time_occurred > <begin_time> AND time_occurred < <end_time>
問題:
これは機能しますが、クエリは非常に非効率的で、応答するのに約40秒かかります。私が理解しているように、PostgreSQLはこのタイプのクエリに使用するのに適したデータベースではありません。
私は座って、このタイプのクエリにインデックスを付けてO(log n)時間で実行できるいくつかの方法を考えたので、tが可能であることがわかりました。
これを行うにはどのツールを使用する必要がありますか?カウント行を格納するために別のデータベースを使用する必要がありますか?これを簡単に行うためにPostgreSQLの上にインストールできるパッケージはありますか?私たちのオプションは何ですか?
ノート:
私がこれについてはっきりしていたかどうかはわかりません。の結果はCOUNT
、100,000〜10,000,000のオーダーになるはずです。これは、クエリに一致する行数が100,000〜10,000,000のオーダーになることを意味します。テーブル内の実際の行数は1桁多くなります。
本当にありがとう!