OR
のクエリプラン ケースはMySQL
を示しているようです は確かにインデックスを使用しているので、明らかにそうです、少なくともこの場合は可能です。 seen
にインデックスがあるので、それは完全に合理的なようです。 、およびid
PKです。
「論理的かつ合理的な説明」が現実と矛盾する場合は、論理に欠陥があるか、説明が間違っているか適用できないと考えるのが安全です。パフォーマンスを予測するのは難しいことで有名です。速度が重要な場合、パフォーマンステストは不可欠です。
テストするものを使用する必要があります プログラムが実際に使用するものを適切にモデル化する入力でより高速になります。
ただし、2つのクエリは意味的に同等ではないことにも注意してください。id = 5204
の行の場合 seen = 3
もあります 次に、OR
クエリは1回返しますが、UNION ALL
クエリはそれを2回返します。正しいコードと間違ったコードのどちらが正しいかを除いて、どちらかを選択するのは無意味です。