6M 记录的 SQL Server 查询需要 8 秒是正常的吗?

Posted

技术标签:

【中文标题】6M 记录的 SQL Server 查询需要 8 秒是正常的吗?【英文标题】:SQL Server Query with 6M records taking 8 Sec is it Normal? 【发布时间】:2014-11-28 06:27:41 【问题描述】:

如果没有,那么我如何优化查询以减少执行时间

select ChargeID , SUM(Fee) from Charges group by ChargeID 

服务器机器是具有 12GB RAM 并运行 64 位操作系统的 Xeon(R) CPU 内存使用量接近 10GB,CPU 使用量为 5-10%

Charges Table 只有聚集索引 ChargeID。

这是执行计划

推荐一些可以减少执行时间的提示或技巧谢谢

【问题讨论】:

我们需要更多信息来帮助您。执行时间取决于几个因素:服务器中的硬件、磁盘 I/O 使用率、CPU 使用率、服务器的负载、表的结构、索引、它们的碎片、统计等等等等。这个问题也是板来帮助你。 (8 秒可能正常)。 可能还取决于表数据是否缓存在内存中以及 SQL Server 实例正在使用多少内存。检查这个dba.stackexchange.com/a/72271/44324 和往常一样 - 服务器规格完全忽略了 msot 重要因素:磁盘子系统。 你检查执行计划了吗?您可能会得到一些关于问题和改进的提示。 该 SQL 没有什么可优化的,但还是检查一下解释计划 【参考方案1】:

是和不是。这取决于服务器,可能更多的是磁盘 IO。

你做一个索引搜索——这是最好的。问题是磁盘传输数据的速度有多快。我预计时间会少很多,但我预计“磁盘”将在 2014 年成为 SSD,以便进行任何实际分析。

我会检查磁盘 IO、延迟等 - 但从 SQL 方面来说,你无能为力了,这与查询计划一样好。

【讨论】:

感谢 TomTom 的时间和回答。

以上是关于6M 记录的 SQL Server 查询需要 8 秒是正常的吗?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server讲课笔记02:查询与统计数据

我需要从 SQL Server 查询中获取前 5 条记录,但要计算满足 where 子句条件的所有记录

SQL Server:时间范围查询重叠

SQL Server 2008 - 性能慢查询

SQL Server如何优化获取具有最大值的相关记录的查询

查询匹配列表 SQL Server 中的所有记录