- 合并不重复的,要重复的 用 union all
为什么:select * from table a = 1 or b = 2
a有索引,b有索引
用 or 如果走索引,首先 会判断 用哪个的索引比较好,例如a , 那么 a索引到,这列要,不到 回表去判断 b的值 在判断,所以 一定是全表扫描
用union a走索引,b走索引,2次 索引 和 一次全表扫描比 ,一定快
2.只要多个 不同的 字段 不管是不是都有索引,大概率会选择,全表扫描,因为or 只能选 一个 字段 有 索引列 ,和 and不一样 可以建复合索引,而且 索引不到的 都需要回表 再去 判断 等于 全表 + n次 回表操作