我正在尝试使用SQL Server 2005学习SQL查询优化。但是,我没有找到任何可以通过单独调整查询来提高性能的实际示例。您能否列出一些示例查询 - 优化之前和之后?
它必须是查询调优 - 不添加索引,不进行覆盖索引,不对表进行任何更改。不应该对表和索引进行任何更改。 [我明白索引很重要。这仅用于学习目的]
如果您可以使用临时表解释而不是引用任何像adventureworks这样的示例数据库,那就太棒了。
答案 0 :(得分:1)
1)在SELECT,UPDATE和DELETE中尽可能多地使用JOIN。有时人们循环记录(或使用游标)来更新,从表中删除记录,但你几乎总是可以JOIN表来实现同样的事情,这将极大地提高性能。示例here。
2)除非您获得一些记录并对其执行一些中间操作并返回结果,否则不需要使用临时表。为此,无论如何都应该使用Table variables。
3)如果由于上述原因你不想使用临时表,因为你不需要中间更新等但是你仍然希望使用结果集进行进一步的连接,尝试使用CTE (Common table expressions)。我知道它可能与性能无关,但对派生表非常有用。
4)正如上面提到的那样,尝试使用IF EXISTS而不是COUNT也是好的。
5)尽可能在SELECT查询中尝试使用列名而不是*。
答案 1 :(得分:0)
我建议你读一本好书,比如SQL Tuning
答案 2 :(得分:-1)
作为学习的第一步,请在查询中使用 explain
。