我有一张表可以简化到下面:
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万行,VALUE1
和VALUE2
中的数据非常稀疏。
查询Select Count(*) from DATA
大约需要30秒。以下查询需要1分30秒:
Select Count(*) from DATA Where VALUE1<>VALUE2
有什么方法可以让它更快吗?我基本上需要找到(并更新)VALUE1
与VALUE2
不同的所有行。我考虑添加一个名为ISDIFF
的位字段,并在更新值字段时通过触发器更新该字段。但是我需要在位字段上创建索引并选择WHERE ISDIFF=1
。
任何帮助将不胜感激。
PS:使用MS SQL Server 2008