gpt4 book ai didi

sql-server - 在 SELECT 中使用完全限定名称时性能下降

转载 作者:行者123 更新时间:2023-12-03 16:48:10 24 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 R2 来解决这个问题。

在我的一个应用程序中,我需要引用另一个数据库中的表。所以我做了一个查询:

USE Db1
SELECT * FROM Db2.dbo.Table1

即使对于只有 300 条记录的表,查询也需要大约 2 秒才能完成。延迟是一致的,我在 Management Studio 中运行它并点击执行,结果是一样的。我这样做了大约 10 次,结果一致。

现在,当我运行查询时,但这次是在实际数据库的上下文中运行它:

USE Db2
SELECT * FROM Table1

返回相同结果时几乎没有等待时间。

现在奇怪的是,当我返回我的第一个查询时,延迟不再发生!每次我重新启动 SQL Server 时都会重现此行为。

有没有人遇到过这种行为?您对我可能做错的地方有什么想法吗?

最佳答案

终于想通了。 SELECT 中引用的数据库的自动关闭属性设置为 True。我将其设置为 False,SELECT 调用期间的延迟消失了。

所以发生的事情是它总是为每个 SELECT 语句启动数据库!我检查了事件查看器,果然,每次调用都有数据库启动日志。

为了将其设置为 false,我使用了 Management Studio,右键单击“数据库”,然后转到“属性”。在“属性”窗口中,选择“选项”,然后在“自动”组下,第一项是“自动关闭”。将此设置为 False。

有关“自动关闭”属性的更多信息,请参见下面的链接。它默认设置为 True。将此设置为 False,您应该不会遇到此问题。

Auto_Close

关于sql-server - 在 SELECT 中使用完全限定名称时性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17549774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com