【问题标题】:Sql Server Queries taking timeSql Server 查询需要时间
【发布时间】:2011-12-23 06:16:06
【问题描述】:

我的存储过程遇到了一些问题。

我有 1 个用于堆栈条形图的存储过程,显示一个月的数据。

之前在我的本地服务器上需要 40 多秒,所以我做了一些更改,现在需要 4 秒。当我在实时服务器上运行时,相同的查询需要 40 多秒。

记录的数量与我本地服务器中的相同。

谁能告诉我应该怎么做才能让它在我的实时服务器上更快?

【问题讨论】:

  • 嗯。复制您在本地服务器上所做的更改?
  • 你试过在表格上使用索引吗?
  • 信息不够——我们至少需要:表结构、索引信息、准确查询、数据分布(什么样的数据是在那张桌子上).......
  • 我猜同样的症状也适用于参数嗅探。参考:link
  • 最重要的是:在您的数据库上执行EXEC sp_updatestats;很可能是您的统计信息已过时,因此服务器选择了不正确的查询计划。

标签: sql sql-server sql-server-2008 database-performance


【解决方案1】:

一个好的开始是运行 SQL Server Management Studio (SSMS),加载查询,然后打开“显示实际执行计划”,这将准确地显示 SQL 对查询执行的操作。它还将向您显示与查询中的步骤相关的相对“成本百分比”。这有助于识别导致查询花费这么长时间的表/连接/聚合。

我也相信,在最新版本的 SSMS 中,它会建议应该添加哪些索引。

希望这会有所帮助。 丰富。

【讨论】:

  • 我已清除服务器上该数据库的日志文件。但这是我知道的临时解决方案。几天后我又必须去那里n再做一次。请给我一些永久的解决方案
  • 清除日志文件在短期内会有所帮助,但这并不能解决您的主要问题。你按照我上面的建议试过了吗?如果您查看执行计划,它可能会指出一些显而易见的事情。
【解决方案2】:

这是一个复杂的问题。参数很多 可以更改执行时间

CPU 速度, 内存, 索引

【讨论】:

    【解决方案3】:

    假设服务器在处理能力和 RAM 方面会更强大,索引是您想要研究的东西。

    【讨论】:

    • 我的表包含超过 10000 条记录。那么现在建立索引会影响性能吗?
    • 是的,它会让一切变得更快 =) 添加实际索引只需要很少的时间。只要确保在那里放一个相关索引。 (回答你的下一个问题:这取决于)
    • 顺便说一句,您可以粘贴示例查询吗,因为仅 10k 条记录就需要 40 秒,它有很大的性能改进空间。
    【解决方案4】:

    在您的 mysql 表中使用索引,这也可能是因为您的主机 服务器的性能。服务器可能面临停机时间。

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 2016-07-04
      • 2015-04-07
      • 2016-02-02
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多