SQL 中 OR 与 UNION ALL选择指南
一句话总结普通小表、无索引场景用OR更简单、代码更短大表、有索引场景用UNION ALL性能远优于 OR需要去重必须用UNION性能比 UNION ALL 差核心区别只扫描一次表 / 索引数据库需要同时判断两个条件致命问题大多数情况下OR 会导致索引失效变成全表扫描比如WHERE id1 OR nametest即使 id、name 都有索引数据库也可能两个索引都不用2. UNION ALL 的工作原理执行两次独立查询每个查询都可以独立使用自己的索引结果直接拼接不做去重性能优势大数据量下比 OR快几倍几十倍3. UNION不带 ALL会对最终结果去重 排序性能比 UNION ALL 差很多只有你必须去重时才用什么时候必须用 OR小表 / 测试数据几百、几千条数据量太小性能差异可以忽略OR 代码更简洁两个条件依赖同一行数据的关联判断WHERE (a1 AND b2) OR (a3 AND b4)什么时候必须用 UNION ALL大表、生产环境、追求速度查询条件可以命中不同索引-- id 有索引name 有索引 SELECT * FROM t WHERE id100 UNION ALL SELECT * FROM t WHERE nameabc3.避免 OR 导致的索引失效最终选择规则背会这 3 条有索引 数据量大➜UNION ALL首选无索引 数据量小➜OR简洁需要去重➜UNION没办法
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2616018.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!