У меня есть много, чтобы многие таблицы ссылка CategoryProduct с 2-мя колоннами, которые будут иметь многомиллионные записи:SQL производительность запросов сервера на кластерный индекс с композитными полями
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, чтобы можно было оптимизировать такой запрос, как показано ниже, с последовательным чтением при попадании соответствующего идентификатора категории.
select ProductID from CategoryProduct where CategoryID = value
Почему бы не отсортировать по категории id? –
@DoobyInc Я обновил свой вопрос. – mortdale
Вы просто хотите заказать по категории ID или что-то еще? ЕСЛИ вы просто хотите заказать по категории Id, то почему бы вам не использовать заказ по ключевому слову в конце вашего оператора select в SQL? –