当前位置: 首页 > 面试题库 >

sql group by与众不同

别宏盛
2023-03-14
问题内容

当查询中没有汇总时,为什么有人使用分组依据而不是分组?

另外,有人知道分组依据与MySQL和SQL Server中不同的性能注意事项。我猜想SQL
Server有一个更好的优化器,并且那里的性能可能接近同等水平,但是在MySQL中,我希望显着的性能优势能够与众不同。

我对dba答案感兴趣。

编辑:

Bill的帖子很有趣,但不适用。让我更具体一点…

select a, b, c 
from table x
group by a, b,c

select distinct a,b,c
from table x

问题答案:

来自MS SQL Server的少量(非常少量)经验数据,来自我们数据库的几个随机表中。

对于模式:

SELECT col1, col2 FROM table GROUP BY col1, col2

SELECT DISTINCT col1, col2 FROM table

当查询没有覆盖索引时,两种方式都会生成以下查询计划:

|--Sort(DISTINCT ORDER BY:([table].[col1] ASC, [table].[col2] ASC))
   |--Clustered Index Scan(OBJECT:([db].[dbo].[table].[IX_some_index]))

当有覆盖指数时,两者都产生:

|--Stream Aggregate(GROUP BY:([table].[col1], [table].[col2]))
   |--Index Scan(OBJECT:([db].[dbo].[table].[IX_some_index]), ORDERED FORWARD)

因此,从这个非常小的示例中,SQL Server当然可以将两者对待。



 类似资料:
  • 从纯Java的观点看,RxJava Observable类源自于经典的Gang Of Four的观察者模式。 它添加了三个缺少的功能: 生产者在没有更多数据可用时能够发出信号通知:onCompleted()事件。 生产者在发生错误时能够发出信号通知:onError()事件。 RxJava Observables 能够组合而不是嵌套,从而避免开发者陷入回调地狱。 Observables和Iterab

  • 问题内容: 如标题所示,我使用的是SQL Server2008。如果这个问题很基础,我深表歉意。我只用了几天的SQL。现在我有以下查询: 我想做的是在ID列中使用select top n以及不同的值。在一些论坛中搜索说要使用 但是当我将第一行替换为 我得到的结果与不使用不同词的结果相同。我应该怎么做才能只过滤出重复的ID条目? 谢谢你。 问题答案: 简单的选项是使用分组依据,并为所有其他字段选择最

  • 使用软件包https://github.com/golang/crypto/tree/master/ed25519我正在尝试获取给定私钥的公钥。 这些数据来自http://www.bittorrent.org/beps/bep_0044.html:试验2(可与盐发生变化) 问题是, ed25519.Public()不会返回相同的公钥,当我给它输入给定的私钥。Go语言实现返回PVK的最后32个字节。

  • 我正在尝试将Zstar二维码扫描仪与我的android webview应用程序集成。我成功导入了一个zstar项目并部署了它。扫描仪工作正常,没有任何问题。现在我正在尝试将此扫描仪与我的webview集成。 我正在研究的方案是,“当用户打开应用程序时,它应该启动webview,在webview中会有一个名为“扫描”的链接,单击该链接时,它应该向本机java代码“Zxing scanner func

  • 我已经用MassTransit实现了一个简单的发布者/使用者集,我想让使用者从同一个队列中读取消息。但是,当我运行它时,我看到很大一部分消息被发送到错误队列,而不是被消耗。从我看到的讨论(所以,论坛)来看,对于RabbitMQ来说,这应该非常非常简单(只需指向相同的队列),但它并不起作用。是否有应该设置的附加配置? 这是我的出版商 还有我的消费者