1

テーブルに何百万ものデータがあるため、最適化しようとしている次のクエリがあります。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 つのより良い方法を教えてください。

ありがとう!!

4

2 に答える 2