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

不要迷信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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 SQL Server 的优化,使用 OR 和 UNION 这两个操作符会有一些性能上的考量。下面是关于这两者的一些指导: 1. OR 操作符:在 WHERE 子句中使用 OR 运算符可以在一条 SQL 语句中实现多个条件的筛选。然而,OR 运算符可能会导致查询执行时间的增加,特别是当涉及到多个复杂条件时。这是因为 OR 运算符会导致数据库需要进行更多的比较和索引扫描来满足查询要求。为了优化 OR 运算符的性能,可以考虑以下几点: - 使用索引:确保查询中涉及的列上存在适当的索引,这样数据库可以更快地进行匹配和筛选。 - 使用括号:将 OR 运算符用括号括起来,以确保查询条件的逻辑正确性,并帮助数据库优化器更好地处理查询计划。 2. UNION 操作符:UNION 可以将多个 SELECT 语句的结果合并为一个结果集。然而,与 OR 不同,UNION 的性能主要取决于涉及的表和查询的结构。以下是一些 UNION 操作符的优化建议: - 使用 UNION ALL:如果不需要去重操作,则使用 UNION ALL 而不是简单的 UNION。这样可以避免数据库进行额外的去重操作,提高查询性能。 - 注意数据类型匹配:确保 UNION 连接的查询结果中的列具有相同的数据类型,以避免不必要的类型转换,降低性能。 总的来说,OR 和 UNION 都是强大的操作符,但在使用时需要注意对性能的影响,并作出相应的优化措施,以提高查询效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值