mysql or语句的优化

问题遇到的现象和发生背景

MySQL 如何修改SQL语句,去掉语句中的or,因为有or导致索引失效

问题相关代码,请勿粘贴截图

select bid from book a ,querybook b where ( b.bname in (a.bname) or b.bname = "" ) and
(b.bauthor in (a.bauthor) or b.bauthor = "" ) and
(b.barea in (a.barea) or b.barea = "" )

SQL作用是当查询条件为空时默认查询全部数据,不为空是则按照条件进行查询

首先,or 条件是同一个索引字段,走索引,不同才不走。
然后,题主的写法很奇怪,那我就在奇怪的基础上做改动,把or去掉:
select bid from book a ,querybook b where b.bname in (a.bname, "") and
(b.bauthor in (a.bauthor, "")) and
(b.barea in (a.barea, ""))