加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 为什么联合比组快

发布时间:2020-12-12 06:43:17 所属栏目:MsSql教程 来源:网络整理
导读:好吧,也许我太老了,我想了解以下内容. 查询1. select count(*),gender from customergroup by gender 查询2. select count(*),'M' from customerwhere gender ='M'unionselect count(*),'F' from customerwhere gender ='F' 第一个查询更简单,但由于某些原因
好吧,也许我太老了,我想了解以下内容.

查询1.

select count(*),gender from customer
group by gender

查询2.

select count(*),'M' from customer
where gender ='M'
union
select count(*),'F' from customer
where gender ='F'

第一个查询更简单,但由于某些原因在分析器中,当我同时执行两个查询时,它表示查询2使用39%的时间,查询1,61%.

我想了解原因,也许我必须重写我的所有疑问.

解决方法

您的查询2实际上是一个很好的技巧.它的工作原理如下:你有一个性别指数. DBMS可以搜索该索引两次以获得两个行范围(一个用于M,一个用于F).它不需要从这些行中读取任何内容,只需它们存在即可.它可以计算两个范围中存在的行数.

在第一个查询中,DBMS需要解码行以读取性别,然后它需要对行进行排序或构建哈希表以聚合它们.这比计算行更昂贵.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读