私は株価のテーブルを持っています。テーブルでMySQL - インデックスにもかかわらず複数の条件を持つクエリが遅い
「data_1d」はticker_idとタイムスタンプのためのユニークなインデックスticker_timestampがある:スキーマは次のようになります。 timestamp_idのプライマリインデックス。
'data_1d'には~6.3Mの行があります。
このクエリは4+秒かかる:説明
select * from data_1d where timestamp_id=1387 and open_close>20
を:
そして、私は、タイムスタンプの範囲を検索する場合には、20〜30秒です。
私は1つの基準、タイムスタンプまたはopen_closeだけで検索すると、0.1-0.6秒かかります。例えば
:
select * from data_1d where timestamp_id=1387
OR
select * from data_1d where and open_close>20
私はここにパフォーマンスを向上させるために何ができますか?
ありがとうございました。
EDIT:テーブルを作成するためにステートメントを使用しませんでしたが、スキーマから理解できるはずです。参照ティッカー - スタンプ
data_1d ticker_id:ID
timestamps_1d 主キー:ID 一意のインデックスが、これらは彼らに
ティッカー 主キーを使用しているキーです.id timestamp_id - 参照timestamps_1d.id 一意のインデックス(または2 cols、ticker_idおよびtimestamp_id):tic
EXPLAINで取得するクエリプランを追加してください –
適切なすべてのテーブルに対して適切なCREATE TABLEステートメント – Strawberry
実際に異なるケースで試した異なるクエリ – THN