【问题标题】:SQL Query slow beginning of each daySQL Query 缓慢开始每一天
【发布时间】:2015-12-17 22:21:24
【问题描述】:

我在下面有一个基本查询。

Select [ID] 
FROM MyTable 
Where [TextBlobField] like '%test%'

当我每天第一次运行这个查询时,它需要很长时间。之后只需要大约 5 秒钟。第二天早上回长查询时间。这是因为 SQL 正在临时缓存索引吗?

我怎样才能一直这么快?注意:我无权在表上创建自己的索引。我可以创建一个存储过程,但不知道这是否有帮助?我应该创建一个视图吗?

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • 查询来自 C# 应用程序。
  • 它在 SQL 2005 中运行。
  • 是 SQL Server 2005。

标签: sql sql-server performance sql-server-2005


【解决方案1】:

原因不太可能是索引缓存。原因:您的查询不能使用where 子句的索引。虽然like 可以使用索引,但是当模式以通配符开头时它不能。

但是,您走在正确的轨道上。原因可能是因为表本身需要被读取并缓存在内存中。

虽然like 不使用索引,但您可以修改查询以使用contains,利用全文索引。你可以了解更多关于这个here的信息。

【讨论】:

  • 我在桌子上发现了一些现有的视图?这会提高性能还是会与视图上的第一个查询需要很长时间的情况相同?
  • @user1887198 。 . .晚上似乎发生了一些事情,导致了冷缓存(至少就这张表而言)。您可以使用 SQL Server 代理安排作业,以便在其他人之前对表运行查询。
【解决方案2】:

这通常是因为缓存。

一种解决方案是每天早上在最终用户使用您的系统之前自动调用一次该查询 - 这会触发缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2021-07-26
    • 2019-04-05
    • 1970-01-01
    • 2017-10-24
    相关资源
    最近更新 更多