1. ホーム
  2. mysql

クエリーを最適化するためのタイムスタンプのインデックス作成

2023-11-22 02:29:02

質問

以下のような形式のクエリを持っています。

SELECT * FROM MyTable WHERE Timestamp > [SomeTime] AND Timestamp < [SomeOtherTime]

私はこのクエリを最適化したいと思い、timestampにインデックスを付けることを考えていますが、これが役に立つかどうかはわかりません。理想的には timestamp をクラスタ化インデックスにしたいのですが、MySQL は主キーを除き、クラスタ化インデックスをサポートしていません。

  • MyTable は 400 万行以上あります。
  • Timestamp は実際には INT .
  • 一度挿入された行は、決して変更されません。
  • 行の数は、任意の Timestamp を持つ行の数は平均して 20 ほどですが、200 ほどになる可能性もあります。
  • 新しく挿入された行には Timestamp を持ち、それは既存の行のほとんどよりも大きいですが、より新しい行のいくつかよりも小さい可能性があります。

のインデックスは Timestamp のインデックスは、このクエリを最適化するのに役立ちますか?

どのように解決するには?

疑う余地もありません。インデックスがない場合、クエリはテーブルのすべての行を参照する必要があります。インデックスがあれば、正しい行を探す限り、クエリはほとんど瞬時に実行されます。しかし、その代償として わずか しかし、それは本当にわずかなものです。