2012-04-10 8 views
0

私は、テーブルがtbl_ECR_ProductData、およそ92356143行あります。毎週100,000行がこの表にインポートされます。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セットインデックス(あなたは値がsuperseededされている必要はありません。つまり、行新しい行で)これらの行を削除するか、履歴値テーブルに移動します。 – mortb

+0

SQL Server Management Studioでクエリを実行する場合は、「実際の実行計画を含める」をオンにします。生成された実行計画を確認して、クエリのどの部分が最長時間を要しているかを確認します。 「ネストされたループ」を探すのは、一般的にインデックススキャンより時間がかかります。どちらかを試してみてください。1.長い時間がかかる部分を避けるためにクエリを書き直すか、または2.長時間実行するパーツのパフォーマンスに役立つインデックスを設定します。 – mortb

答えて

4

を次のように 表構造です。ただし、以下のリンクは、問題がどこにあるのかを知り、問題を解決するのに役立ちます。私はこれらを非常に参考にしています。あなたがテーブルに履歴情報を格納している場合 2に検索する必要がある列に

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/

+0

テーブルの構造は以下の通りです – user1323929

関連する問題