I 5万件のレコードが含まれている私のDB内のテーブルがあります:あなたは、上から見ることができるようにパフォーマンスを最適化 - インデックス
CREATE TABLE [dbo].[PurchaseFact](
[Branch] [int] NOT NULL,
[ProdAnal] [varchar](30) NULL,
[Account] [varchar](12) NULL,
[Partno] [varchar](24) NULL,
[DteGRN] [date] NULL,
[DteAct] [date] NULL,
[DteExpect] [date] NULL,
[OrderNo] [bigint] NULL,
[GRNNO] [varchar](75) NULL,
[SuppAdv] [varchar](75) NULL,
[Supplier] [varchar](12) NULL,
[OrdType] [varchar](4) NULL,
[UnitStock] [varchar](4) NULL,
[OrderQty] [float] NULL,
[RecdQty] [float] NULL,
[Batch] [varchar](100) NULL,
[CostPr] [float] NULL,
[Reason] [varchar](2) NULL,
[TotalCost] [float] NULL,
[Magic] [bigint] IDENTITY(1,1) NOT NULL,
PRIMARY KEY CLUSTERED
(
[Magic] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
を - CLUSTERED INDEX
があるMAGIC
列で使用されていますUNIQUE
カラム。
SELECT Branch,
Supplier,
ProdAnal,
DteGRN AS Date,
PartNo AS Partno,
OrderNo,
OrderQty,
TotalCost,
CostPr
FROM dbo.PurchaseFact src
WHERE YEAR(DteGRN) = 2016
をWHERE clause
も問合せが速く実行させない除く:以下SELECT statement
ため
データ検索時間は十分に問題を報告する原因となる8minsの上にあります。 私はそれが高速に実行することを期待したが無駄にUNIQUE index
を含めるために一緒にCLUSTERED index
で、試してみました:
CREATE UNIQUE INDEX Unique_Index ON dbo.PurchaseFact ([Branch], [Supplier], [Magic])
INCLUDE ([ProdAnal], [Account], [Partno], [DteAct], [DteExpect], [OrderNo], [GRNNO],
[SuppAdv], [OrdType], [UnitStock])
は、私は、このテーブルの上にパフォーマンス時間を最適化することができますか私はに頼る必要がありますどのような方法があります古いデータをアーカイブしますか?
アドバイスをいただければ幸いです。
2016年に返される行数はいくつですか?データ転送には時間がかかることがあります。 – jarlh
その年計算を行うために永続計算列を追加できますか?このフィールドにクラスタ化されていないインデックスを追加し、他のインデックスを含めることができます。 –
@ jarlh - 1,600万レコードが返されます。 – PKirby