我有一个包含 2 列的多对多链接表 CategoryProduct,其中将包含数百万条记录:
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
但是,使用 Select 的结果是
CategoryID ProductID
2 1
1 2
1 3
2 3
为什么数据存储在 ProductID 组中?这是否反映了数据的实际顺序?如何将数据保存在 CategoryID 组中,以便在命中匹配的 CategoryID 时通过连续读取来优化如下查询。
select ProductID from CategoryProduct where CategoryID = value