当前位置: 首页 > news >正文

SQL 中 OR 与 UNION ALL选择指南

一句话总结

  • 普通小表、无索引场景:用OR更简单、代码更短
  • 大表、有索引场景:用UNION ALL性能远优于 OR
  • 需要去重:必须用UNION(性能比 UNION ALL 差)

核心区别

  • 只扫描一次表 / 索引
  • 数据库需要同时判断两个条件
  • 致命问题大多数情况下,OR 会导致索引失效,变成全表扫描
  • 比如:WHERE id=1 OR name='test',即使 id、name 都有索引,数据库也可能两个索引都不用

2. UNION ALL 的工作原理

  • 执行两次独立查询
  • 每个查询都可以独立使用自己的索引
  • 结果直接拼接,不做去重
  • 性能优势:大数据量下,比 OR快几倍~几十倍

3. UNION(不带 ALL)

  • 会对最终结果去重 + 排序
  • 性能比 UNION ALL 差很多
  • 只有你必须去重时才用

什么时候必须用 OR?

  1. 小表 / 测试数据(几百、几千条)

    • 数据量太小,性能差异可以忽略
    • OR 代码更简洁
  2. 两个条件依赖同一行数据的关联判断

WHERE (a=1 AND b=2) OR (a=3 AND b=4)

什么时候必须用 UNION ALL?

  1. 大表、生产环境、追求速度
  2. 查询条件可以命中不同索引
-- id 有索引,name 有索引 SELECT * FROM t WHERE id=100 UNION ALL SELECT * FROM t WHERE name='abc'

3.避免 OR 导致的索引失效

最终选择规则(背会这 3 条)

  1. 有索引 + 数据量大UNION ALL(首选)
  2. 无索引 + 数据量小OR(简洁)
  3. 需要去重UNION(没办法)
http://www.jsqmd.com/news/823973/

相关文章:

  • 防火墙知识--安全策略故障排查
  • 【NI-DAQmx实战】巧用DAQ助手,三步构建高效数据采集任务
  • 伊的家护肤老师是否可靠?专业资质与团队规模奠定可靠基础 - 品牌企业推荐师(官方)
  • 电路设计效率革命:Draw.io电子工程库的专业绘图方案
  • 表空间(Tablespace)管理
  • 5分钟快速上手GSE:魔兽世界智能技能循环终极指南
  • 如何评估机器翻译质量?COMET框架的实战指南
  • 从PLINK到CMplot:三步绘制高颜值SNP密度图
  • TI毫米波雷达IWR1642原始数据采集避坑指南:DCA1000配置、IQ顺序与帧大小限制
  • 首驱电动车和小牛哪个好?售后体验和智能化全面怎么比 - 品牌企业推荐师(官方)
  • 【深度解析】从 Gemini 3.2、Claude 限额变化到 AI Agent:大模型工程化选型与实战评估
  • 新手入门如何在Taotoken平台获取API密钥并完成首次充值
  • MIMIC-IV 2.2 数据安装后必做:一键生成官方物化视图(PostgreSQL版),大幅提升查询效率
  • Midjourney v8艺术审美重构(v7用户必看的3个认知断层与迁移路径)
  • 实战-Spine动画与UI元素的层级穿插艺术
  • PADS VX2.4 封装制作避坑指南:从0402电阻封装实战说清Layer_25和阻焊层
  • 用Python+OpenCV搞定热红外与可见光图像自动对齐(附完整代码与避坑指南)
  • Java高并发基础核心:厘清多线程并发本质与线程安全底层逻辑
  • 开源项目性能基准测试:从JMH到自动化仪表盘的工程实践
  • 揭秘!门式起重机源头厂家口碑排行,谁能脱颖而出?
  • 【哲学 | 西方哲学方向】《论死亡,论生存》
  • 嵌入式 C 语言宏的高级编程技巧~
  • 避坑指南:用MOT17训练YOLOv7检测器时,为什么你的mAP上不去?可能是数据划分的锅
  • 【NotebookLM地理学研究加速器】:20年GIS专家亲测的5大冷门技巧,90%研究者至今不知
  • 基于WebScoket与RabbtiMQ实现的用户对话与信息持久化策略学习
  • Revelation光影包:物理渲染与启发式算法的视觉革命
  • 为什么你的MJ提示词总被降权?结构失衡、权重冲突、语义缠绕三大隐性错误全解析,立即自查
  • 2026年如何选择适合的石灰料仓供应商? - 品牌企业推荐师(官方)
  • Netflix成立INKubator工作室,用生成式AI丰富流媒体内容库
  • 别再混淆MIO和EMIO了!Zynq 7010 PS端GPIO架构详解与选型指南