前端之家收集整理的这篇文章主要介绍了
sql – 为什么联合比组快,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,也许我太老了,我想了解以下
内容.
查询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需要解码行以读取性别,然后它需要对行进行排序或构建哈希表以聚合它们.这比计算行更昂贵.
原文链接:https://www.f2er.com/mssql/78160.html