0

ここに何百万ものエントリがあるテーブルがあります。テーブルにはイベントが格納され、各イベントにはタイムスタンプがあります。いくつかの WHERE 句のパラメーターを指定すると、最新のイベントが必要になります。

これが私たちが思いついたものです:

SELECT * 
FROM eventTable 
WHERE timestamp_date >= '2012-07-16' AND 
      eventType = 1  AND someOtherField = 'value' 
ORDER BY timestamp DESC 
LIMIT 1;

現在、これが戻るには時間がかかりすぎています。SQL を変更して、必要なものをより速く提供する方法はありますか? また、このようなことに対する投影戦略はありますか?

ありがとうホセ

4

1 に答える 1

1

基本的に、order by 句のタイムスタンプ列に従って、予測の少なくとも 1 つを最適化する必要があります。プロジェクションを適切に行うと、これは非常に高速になるはずです。

編集:明確化のためのメモ。タイムスタンプ列が order by 句の唯一のフィールドであるべきだと暗示するつもりはありませんでした。また、以下のコメントにも記載されているように、この場合、データベース デザイナでのクエリ固有の実行は悪いことではありません。速度を最適化するオプションがあると思います。「select *」を実行しているため、出力はおそらくスーパーおよびバディのプロジェクションとして機能するはずです。

于 2012-09-21T20:32:26.867 に答える