我有一张包含很多新闻的表格。我正在使用SQL Server 2008 Standard ed
在此表中,我有
datetime
列,表示记录插入时间。headline
列上的非聚集索引,newsIdentity
列(可能重复),author
列当我在此表 中通过我的网络应用 搜索新闻时,服务器需要超过20秒才能响应。
我发现用于计算行数的SQL实际上很慢(对于搜索结果分页)。
这是 showplan_text 结果:
StmtText
select count(*)
from [news] WITH (NOLOCK)
WHERE headline like N'%Nginx%'
StmtText
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1007],0)))
|--Stream Aggregate(DEFINE:([Expr1007]=Count(*)))
|--Index Scan(OBJECT:([newsMangr].[dbo].[news].[IX_SearchNews]), WHERE: ([newsMangr].[dbo].[news].[headline] like N'%Nginx%'))
20秒是不可接受的,有什么建议吗?
答案 0 :(得分:1)
试试这个:
WHERE SUBSTRING(headline, <offset>, 5) = 'Nginx'
<offset>
为常数值。