mysqlがクエリを最適化する方法について質問があります。SQLクエリーを作成する方法インデックス範囲スキャンを使用する
select *
from pp
where 1
and timestamp >= '2016-01-01' and timestamp <= '2017-01-03'
and (s = 0 or s is NULL)
and (
from in (select col from Temp)
or
to in (select col from Temp2)
)
order by idx desc limit 0, 100;
Mysqlは、2つのサブクエリが添付されたタイムスタンプでフルインデックススキャンを使用します。
それは後でサブクエリを適用する最初にタイムスタンプに索引レンジ・スキャンを使用していない理由を私は理解していません。
これには特別な理由がありますか? そうでなければ、インデックス範囲のスキャンを使用することはできますか?
私はこの定式は正しいとは思わない - OPは2つのルックアップの間に「OR」を持つ。効果的に「AND」と言っています。 –
あなたは絶対に正しいです。私はOPの質問を誤解していた。私は私の答えを編集しました。 – Dario