使用SQL查询解决程序中的速度瓶颈问题

时间:2012-03-30 20:15:34

标签: sql

这是一个开放式的面试问题。我无法得到满意的答案。 问题是:

如果您尝试修复涉及功能的速度错误,该功能需要90秒才能执行,而客户希望该功能的使用时间少于10秒,您将如何解决问题并解决问题?假设该功能有10个查询,30个计算,以及分布在5个模块上的3000行代码

3 个答案:

答案 0 :(得分:3)

我认为答案的第一部分是你将在任何代码语言中使用分析器来首先验证瓶颈是在SQL查询中而不是在某些处理中。通过告诉您每种方法花费的时间,探查器还可以告诉您哪些查询花费的时间最多。一旦你得到了,你就可以使用数据库查询优化器来解决问题。

答案 1 :(得分:1)

太开放了,但你可以尝试一些事情:

  • 确保您正确理解客户的要求

  • 确保您了解当前设置中的性能瓶颈

  • 确保您所拥有的查询存在正确的索引 心

  • 优化数据库架构,在必要时对其进行反规范化以避免连接

  • 在适用的情况下探索缓存和预计算结果,这样您就不必首先查询数据库了。

  • 如果探索所有技术途径或时间和精力过多,请在必要时与客户重新设定期望。

答案 2 :(得分:1)

嗯......我会尝试隔离每个“步骤”,看看每个步骤执行的时间。我将首先通过使用分析器运行跟踪来专注于SQL,因为它们通常需要更长的时间才能运行。一旦我掌握了价值观,我将决定下一步。我不能告诉我,如果我看到Db只负责执行时间的10%,我将100%专注于数据库