【问题标题】:How optimize queries with fully qualified names in t-sql?如何在 t-sql 中使用完全限定名称优化查询?
【发布时间】:2011-02-09 15:18:30
【问题描述】:

当我打电话时:

select * from Database.dbo.Table where NAME = 'cat'

需要:

200 毫秒

当我在 Management Studio 中将数据库更改为数据库并在没有完全限定名称的情况下调用它时,速度要快得多:

select * from Table where NAME = 'cat'

需要:

17 毫秒

有什么方法可以在不更改数据库的情况下更快地进行完全限定查询?

【问题讨论】:

  • 这可能是由于不正确的缓存查询计划...或与创建新查询计划相关的开销...
  • 在此处查看 Remus 的答案:stackoverflow.com/questions/1112374/…
  • @Mitch Wheat 谢谢,我已经看到了这个答案,但每次查询我的数据库时我都有相同的时间

标签: sql-server database tsql performance


【解决方案1】:

解决方案是将此数据库上的自动关闭更改为 false。

【讨论】:

    【解决方案2】:

    鉴于这两次如此不同,第二次可能会更快,因为 SQL 已经缓存了您第一次运行的查询计划。你是不是直接把那两个跑了?即使是没有任何变化的相同查询,在您第二次运行时也会快得多。

    如果您想获得查询的准确执行时间,您需要让 SQL 在每次运行后忘记它缓存的查询计划。我想重新启动 SQL 是这样做的一种方法。

    【讨论】:

    • 我已经尝试多次执行这些查询,以相反的顺序并且仍然得到相同的结果。第一次执行后没有任何变化...
    【解决方案3】:

    差异很可能是因为工作室打开了与数据库的新连接。要提供它 - 尝试放置 2 个完全限定的 sql 语句 - 你应该只看到第一个的区别。第二个应该在同一个连接中运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2013-05-27
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多