sql - 对多列进行 DISTINCT 计数

标签 sql sql-server performance tsql query-optimization

是否有更好的方法来执行这样的查询:

SELECT COUNT(*) 
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
      FROM DocumentOutputItems) AS internalQuery

我需要计算此表中不同项目的数量,但不同项目超过两列。

我的查询工作正常,但我想知道是否可以仅使用一个查询(不使用子查询)获得最终结果

最佳答案

如果您想提高性能,可以尝试在两列的哈希值或串联值上创建持久计算列。

一旦它被持久化,只要该列是确定性的并且您使用“健全的”数据库设置,就可以对其进行索引和/或可以在其上创建统计信息。

我相信计算列的不同计数相当于您的查询。

关于sql - 对多列进行 DISTINCT 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471250/

相关文章:

sql - 如何限制CTE递归深度但选择通用表?

sql-server - 通过预过滤结果加速 SQL View

sql - 如何在 INSERT 语句中使用返回表的函数?

mysql - 使用 SELECT mysql 查询将数据导出到 CSV 文件

mysql - 具有相同列名的 SQL 连接表

sql - 如何将 GROUP 与 DATEPART 一起使用?

mysql - 非常慢的 TRUNCATE 伴随着 httpd 日志上的 "Server seems busy"

performance - Azure 应用服务 (Linux) 上的 Xenforo 性能问题

c# - 循环中的实例化 : Verbosity vs. 性能

mysql - RethinkDb 查询两个日期列之间的当前日期时间