【问题标题】:Dealing with large tables performance in SQL Server 2000在 SQL Server 2000 中处理大型表的性能
【发布时间】:2012-04-10 11:41:31
【问题描述】:

我有一个表 tbl_ECR_ProductData 有近 92356143 行。每周将 100000 行导入此表。

该表有 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] )

【问题讨论】:

  • 1.在您需要搜索的列上设置索引 2. 如果您在表中存储历史信息(即,您不需要哪些值已被较新行取代的行)删除这些行或将它们移动到历史值表中。
  • 在 SQL Server Management Studio 中运行查询时,打开“包括实际执行计划”。查看生成的执行计划以查看查询的哪些子部分花费的时间最长。寻找“嵌套循环”通常比索引扫描等花费更多的时间。尝试 1. 重写查询以避免需要很长时间的部分或 2. 设置索引将有助于长时间运行的部分的性能。

标签: sql sql-server sql-server-2000 sqlperformance


【解决方案1】:

不看代码很难说如何将时间最小化。但是,这些下面的链接应该可以帮助您找出问题所在并可能解决它们。我觉得这些很有帮助。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2011-10-13
    • 2014-12-19
    • 1970-01-01
    • 2023-03-18
    • 2013-11-03
    • 2011-03-17
    相关资源
    最近更新 更多