SQL查询每天的开始都很慢
下面我有一个基本的问题SQL查询每天的开始都很慢,sql,sql-server,performance,sql-server-2005,Sql,Sql Server,Performance,Sql Server 2005,下面我有一个基本的问题 Select [ID] FROM MyTable Where [TextBlobField] like '%test%' 当我每天第一次运行这个查询时,它会花费很长时间。之后只需要5秒钟。第二天早上回到长查询时间。这是因为SQL正在缓存临时索引吗 我怎么能一直这么快?注意:我没有权限在表上创建自己的索引。我可以创建一个存储过程,但不知道这是否有帮助?我应该创建视图吗?原因很可能是索引缓存。原因:您的查询无法使用where子句的索引。虽然like可以使用索引,但当模式
Select [ID]
FROM MyTable
Where [TextBlobField] like '%test%'
当我每天第一次运行这个查询时,它会花费很长时间。之后只需要5秒钟。第二天早上回到长查询时间。这是因为SQL正在缓存临时索引吗
我怎么能一直这么快?注意:我没有权限在表上创建自己的索引。我可以创建一个存储过程,但不知道这是否有帮助?我应该创建视图吗?原因很可能是索引缓存。原因:您的查询无法使用
where
子句的索引。虽然like
可以使用索引,但当模式以通配符开头时不能使用索引
然而,你在正确的轨道上。原因可能是表本身需要读取并缓存在内存中
尽管
like
不使用索引,但您可以修改查询以使用contains
,利用全文索引。您可以了解更多信息。原因很可能是索引缓存。原因:您的查询无法使用where
子句的索引。虽然like
可以使用索引,但当模式以通配符开头时不能使用索引
然而,你在正确的轨道上。原因可能是表本身需要读取并缓存在内存中
尽管
like
不使用索引,但您可以修改查询以使用contains
,利用全文索引。您可以了解更多信息。这通常是因为缓存
一种解决方案是每天早上在终端用户使用系统之前自动调用该查询一次,这会触发缓存。这通常是因为缓存
一种解决方案是每天早上在最终用户使用系统之前自动调用该查询一次,这会触发缓存。您使用的是哪种DBMS?查询来自C#应用程序。它运行在SQL 2005中。是的SQL Server 2005。您使用的是哪种DBMS?查询来自C#应用程序。它运行在SQL 2005中。是的SQL Server 2005服务器2005。我在表上找到了一些现有视图?这会提高性能吗?还是与视图上的第一个查询花费很长时间的情况相同?@user1887198。晚上似乎发生了一些事情,导致了冷缓存(至少在这个表中是这样)。您可以使用SQL Server代理计划作业,以便在其他人之前对表运行查询。我在表上找到了一些现有视图?这会提高性能吗?还是与视图上的第一个查询花费很长时间的情况相同?@user1887198。晚上似乎发生了一些事情,导致了冷缓存(至少在这个表中是这样)。您可以使用SQLServer代理计划作业,以便在其他人之前对表运行查询。