我可以让这个查询运行得更快

时间:2015-01-08 10:59:40

标签: sql-server indexing

我有一张表可以简化到下面:

Create Table Data (
  DATAID bigint identity(1,1) NOT NULL,
  VALUE1 varchar(200) NOT NULL,
  VALUE2 varchar(200) NOT NULL,
  CONSTRAINT PK_DATA PRIMARY KEY CLUSTERED (DATAID ASC)
)

其中,该指数存在:

CREATE NONCLUSTERED INDEX VALUEIDX ON dbo.DATA
(VALUE1 ASC) INCLUDE (VALUE2) 

该表包含大约 900万行,VALUE1VALUE2中的数据非常稀疏。

查询Select Count(*) from DATA大约需要30秒。以下查询需要1分30秒:

Select Count(*) from DATA Where VALUE1<>VALUE2

有什么方法可以让它更快吗?我基本上需要找到(并更新)VALUE1VALUE2不同的所有行。我考虑添加一个名为ISDIFF的位字段,并在更新值字段时通过触发器更新该字段。但是我需要在位字段上创建索引并选择WHERE ISDIFF=1

任何帮助将不胜感激。

PS:使用MS SQL Server 2008

0 个答案:

没有答案