テーブルに何百万ものデータがあるため、最適化しようとしている次のクエリがあります。MySql Explain を試しましたが、クエリを実行する最適な方法が得られませんでした。
SELECT * FROM tbl
WHERE (SEND ='abc' AND TYPE IN ('A', 'D') and FLAG !='Y')
OR (REC ='abc' AND TYPE = 'I' and FLAG !='Y')
次の 2 つのインデックスがあるため、このクエリでは index_merge と sort_union() を使用しています。
1. SEND と REC で
2. RECで
上記のrefタイプを使用する代わりに、サーバーに2回アクセスする代わりに、2つの異なるクエリを使用してみました。
SELECT * FROM tbl
WHERE SEND ='abc' AND TYPE IN ('A', 'D') and FLAG !='Y'
と
SELECT * FROM tbl
WHERE REC ='abc' AND TYPE = 'I' and FLAG !='Y'
データが大きすぎて結論が出ないため、この問題のステートメントに対して最適化されたクエリまたは上記の 2 つのより良い方法を教えてください。
ありがとう!!