当在以下查询中给出长时间的DateTime(查询从c#应用程序运行)时,我遇到了超时问题。表有30,000,000行ID(非主键)上的非聚集索引。表需要索引来提高性能
发现没有主键,所以我最近更新了ID作为主键,它现在不给我超时。任何人都可以帮助我进行下面的查询,为未来创建多个键的索引,如果我从该表中删除非聚集索引并在多个列上创建?数据正在迅速增加,需要对服务表现
select
ID, ReferenceNo, MinNo, DateTime, DataNo from tbl1
where
DateTime BETWEEN '04/09/2013' AND '20/11/2013'
and ReferenceNo = 4 and MinNo = 3 and DataNo = 14 Order by ID
改善,这是创建脚本
CREATE TABLE [dbo].[tbl1]( [ID] [int] IDENTITY(1,1) not null, [ReferenceNo] [int] not null, [MinNo] [int] not null, [DateTime] [datetime] not null, [DataNo] [int] not null, CONSTRAINT [tbl1_pk] PRIMARY KEY CLUSTERED ([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
您能提供一个完整的tbl1表格定义吗?右键单击SSMSE中的表并选择“Script as Create ...” – laylarenee
添加了表定义问题。谢谢 – user2841795
我提供了一个答案。请注意,添加索引会降低插入/更新时间,因为表和索引需要一起更新。索引也随着时间的推移变得分散,需要重建才能以最高的效率执行。 – laylarenee