約500K行を含むテーブルがあります。テーブルには、「ステータス」列にインデックスがあります。したがって、次のExplainコマンドを実行します。
EXPLAIN QUERY PLAN SELECT * FROM my_table WHERE status = 'ACTIVE'
予測可能な「説明」になります。
SEARCH TABLE my_table USING INDEX IDX_my_table_status (status=?) (~10 rows)
テーブルに多くの行が追加された後、「ANALYZE」と呼びます。その後、クエリが非常に遅くなったように見えたので、explainを再実行すると、次のようになります。
SCAN TABLE my_table (~6033 rows)
私が最初に気付くのは、行の見積もりが両方ともかなりずれていることです。最大の懸念は、ANALYZEを実行するとインデックスがスキップされるように見えるという事実です。私はREINDEXを試しました-無駄に。インデックスを元に戻す唯一の方法は、インデックスを削除してから再作成することです。誰かがこれを見たことがありますか?これはバグですか?私が間違っていることについて何か考えはありますか?複数のデータベースでこれを試しましたが、同じ結果が得られました。これは私のPC、MAC、iPhone/iPadにあります-すべて同じ結果です。