【发布时间】:2016-05-03 12:27:20
【问题描述】:
我一直在寻找如何加快 sql 密集型应用程序的提示并找到 this particularly useful link。
在第 6 点他说
- 做前期数据 这是我最喜欢的主题之一,因为它是一种经常被忽视的古老技术。如果您有报告或 将执行类似连接的过程(或者更好的是一组) 大表,它可以为您预先暂存数据 提前加入表格并将它们持久化到表格中。现在 报告可以针对该预先安排的表运行,并避免大 加入。
您并不总是能够使用此技术,但如果可以,您将 发现这是节省服务器资源的好方法。
请注意,许多开发人员通过以下方式解决此连接问题 专注于查询本身并围绕 加入,这样他们就不必再次输入加入条件,并且 再次。但是这种方法的问题是查询仍然运行 对于每一个需要它的报告。通过预先暂存数据,您可以运行 只加入一次(比方说,在报告前 10 分钟)和其他人 避免大连接。我无法告诉你我有多喜欢这种技术。 在大多数环境中,有一些流行的表可以连接所有 时间,所以他们没有理由不能预先上演
据我了解,您只需加入表一次,几个 SQL 查询就可以从中“受益”。对于我正在使用的应用程序来说,这看起来非常有趣。
问题是,我一直在寻找pre staging data,但找不到任何似乎与该技术相关的东西。也许我错过了一些关键字?
我想知道如何在 SQL Server 中使用所描述的技术。该链接说这是一种旧技术,所以我使用 SQL Server 2008 应该不是问题。
我想要的是:我有几个连续运行的SELECT 查询。它们都加入了相同的 7-8 个表,而且它们都非常重,这会影响性能。所以我正在考虑加入他们,运行查询,然后他们删除这个中间表。如何/可以做到吗?
【问题讨论】:
-
嗯。 . .您可能需要考虑“临时表”或中间表。请注意,如果情况发生变化,这种方法可能会导致维护噩梦。
标签: sql-server sql-server-2008 join