sql优化之union all 和or ,in使用

博客指出不要迷信union all比or及in快,要结合实际情况选择。对于索引列,复杂查询时用union all较好;非索引字段用or或in;既有索引又有非索引字段推荐用or、in。单表如此,多表联合查询则要综合连接方式、数据量分布、索引等因素选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不要迷信union all 就比 or及in 快,要结合实际情况分析到底使用哪种情况。

对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引

对于只有非索引字段来说你就老老实实的用or 或者in,因为 非索引字段本来要全表扫描而union all 只成倍增加表扫描的次数

对于既有索引字段【索引字段有效】又包含非索引字段来时,按理你也使用or 、in或者union all 都可以,
       但是我推荐使用or、in。

以上主要针对的是单表,而多表联合查询来说,考虑的地方就比较多了,比如连接方式,查询表数据量分布、索引等,再结合单表的策略选择合适的关键字

转载于:https://www.cnblogs.com/facker1/p/10577473.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值