我有一個多對多的鏈接表CategoryProduct 2列,這將有幾百萬條記錄:SQL Server查詢性能,複合材料領域
CREATE TABLE [dbo].[CategoryProduct](
[Category_ID] [int] NOT NULL,
[Product_ID] [int] NOT NULL,
CONSTRAINT [PK_dbo.CategoryProduct] PRIMARY KEY CLUSTERED
(
[Category_ID] ASC,
[Product_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
基於聚集索引,我預計看到物理記錄存儲在以下結構:
CategoryID ProductID
1 2
1 3
2 1
2 3
然而,與選擇的結果是
CategoryID ProductID
2 1
1 2
1 3
2 3
爲什麼數據存儲在ProductID組中?這是否反映數據的實際順序?如何將數據保存在CategoryID組中,以便在匹配的CategoryID被擊中時,可以使用連續閱讀來優化如下的查詢。
select ProductID from CategoryProduct where CategoryID = value
你爲什麼不按類別ID排序? –
@DoobyInc我更新了我的問題。 – mortdale
你只是想通過類別ID或其他東西?如果你只是想按類別ID排序,那你爲什麼不在SQL的select語句的最後使用關鍵字的順序? –