私は、テーブルが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] )
1セットインデックス(あなたは値がsuperseededされている必要はありません。つまり、行新しい行で)これらの行を削除するか、履歴値テーブルに移動します。 – mortb
SQL Server Management Studioでクエリを実行する場合は、「実際の実行計画を含める」をオンにします。生成された実行計画を確認して、クエリのどの部分が最長時間を要しているかを確認します。 「ネストされたループ」を探すのは、一般的にインデックススキャンより時間がかかります。どちらかを試してみてください。1.長い時間がかかる部分を避けるためにクエリを書き直すか、または2.長時間実行するパーツのパフォーマンスに役立つインデックスを設定します。 – mortb