我有以下查询,我正在尝试优化它,因为表中有数百万个数据。我尝试了 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')
该查询使用 index_merge 和 sort_union(),因为我有以下两个索引:
1. 在 SEND 和 REC
上 2. 在 REC 上
我尝试使用两个不同的查询而不是两次访问服务器而不是上面使用 ref 类型的查询。
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'
请告诉我针对此问题陈述的上述两种优化查询或更好的方法,因为数据太大我无法得出结论。
谢谢!!