2012-04-10 121 views
0

大表的性能处理我有一个表tbl_ECR_ProductData近92356143行。每周100000行被导入到这个表中。在SQL Server 2000中

该表具有16个列,这些列的2补主键,其余的列是varchar类型。

我在这里的问题是,当我搜索基于剩余的列值..表其花费很长的时间,近10分钟。

我怎样才能降到最低的时候?请帮助我在这..你的帮助表示赞赏...在此先感谢! 表结构如下

CREATE TABLE [tbl_ECR_ProductData]( [Serial Number] [varchar](255) NOT NULL, [Act Number] [varchar](255) NULL, [Act Date] [datetime] NULL, [Act Location] [varchar](255) NOT NULL, [Manufacturer] [varchar](255) NULL, [ManufacturerPN] [varchar](255) NULL, [Act Description] [varchar](255) NULL, [Act PtNumber] [varchar](255) NULL, [Act Code] [varchar](255) NULL, [Act DateCode] [varchar](255) NULL, [Pmrl] [varchar](255) NULL, [Act ReceiveDate] [datetime] NULL, [Act Channel] [varchar](255) NULL, [Act Supplier] [varchar](255) NULL, [ImportDate] [datetime] NULL
CONSTRAINT [PK_tbl_ECR_ProductData] PRIMARY KEY CLUSTERED ( [Serial Number] ASC, [Act Location] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] )

+2

1.设置索引由更新的行)删除这些行或将它们移动到历史值表。 – mortb 2012-04-10 11:47:42

+0

在SQL Server Management Studio中运行查询时,打开“包含实际执行计划”。查看生成的执行计划以查看查询的哪些子部分花费的时间最长。寻找“嵌套循环”通常需要比索引扫描等更多的时间。尝试1.重写您的查询,以避免需要很长时间的部分或2.设置索引将有助于长期运行的部分性能。 – mortb 2012-04-10 12:14:27

回答

4

这是很难说怎么没有看到代码降到最低的时候。但是,下面的这些链接应该可以帮助您找出问题出在哪里,并且可能会修复它们。我觉得这些非常有帮助。

http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-1/

你需要在 2.搜索如果您在表中存储历史信息(即你不需要这些值已superseeded即行列

http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-2/

+0

表结构如下 – user1323929 2012-04-10 11:57:21