У меня есть таблица, которая определена следующим образом
CREATE TABLE [dbo].[MyTable](
[MyTableId] [bigint] IDENTITY(1,1) NOT NULL,
[SomeTable2Id] [bigint] NOT NULL,
[SomeTable3Id] [bigint] NOT NULL,
[SomeData] [smallint] NOT NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY NONCLUSTERED
(
[MyTableId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
Помимо вышеуказанного индекса PK_MyTable NONCLUSTERED, у меня есть несколько других индексов NONCLUSTERED, кроме SomeTable2Id и SomeTable3Id
Я думаю, что создаю CLUSTEREDИндекс выше имеет больше смысла, но мне интересно, есть ли хорошее обоснование НЕ создавать индекс CLUSTERED и вместо этого создавать NONCLUSTERED?
PS По этим темам задано много вопросов, но не удалось найти соответствующую (в топ-20 списка).Если это было задано, пожалуйста, перенаправьте меня на соответствующий вопрос пост.
РЕДАКТИРОВАТЬ: рассмотрим случай, когда MyTable
отображает две другие таблицы SomeTable2
и SomeTable3
, и вместо составного ключа у нас есть MyTableId
Так что большую часть времени мои запросы имеют либо SomeTable2Id
или SomeTable3Id
и запросить другой идентификатор.Таким образом, в свете использования этой таблицы, нам действительно нужно беспокоиться о создании кластеризованного индекса по MyTableId
или двух некластеризованных индексов по SomeTable2Id
и SomeTable3Id
достаточно?