ОК, мне нужно это изложить еще раз.Я читал статьи в Интернете и до сих пор не нашел однозначного ответа.
В SQL Server 2008 у меня есть «основная» таблица с записями около 50 тыс. И большим количеством операций чтения, которыеиспользуется одинаково во всех запросах.Эти данные обновляются раз в месяц и читаются сотни раз в секунду.
Данные имеют кластерный индекс по полям, поскольку к ним часто обращаются.Допустим, кластеризованный индекс имеет вид:
КЛАСТЕРНЫЙ ИНДЕКС
Field1 int
Field2 int
Field3 int
Field4 int
Field5 int
Теперь данных не намного больше, чем это, поэтому имеет смысл просто добавить лишнюю парустолбцы в «Включенные столбцы», но SQL Server не позволяет включать столбцы в кластеризованном индексе.
Итак, у нас есть второй индекс, по существу, с такими же полями, что и кластеризованный индекс, с другими столбцами как «Включенные столбцы ".Однако из того, что я прочитал, я считаю, что это может быть избыточно?
ИНДЕКС ПОКРЫТИЯ (не кластеризовано)
Field1 int
Field2 int
Field3 int
Field4 int
Field5 int
ВКЛЮЧЕНО КОЛОННЫ
Field6 varchar(96)
Field7 varchar(96)
в некластеризованном индексе УЖЕ есть столбцы из кластеризованного индекса, определенные в нем?
Если да, то как вообще можно создать этот второй индекс без столбцов (кроме того, что уже есть в кластеризованном индексе)?Другими словами, я хотел бы сказать: «Этот индекс точно такой же, как кластеризованный индекс ... с парой включенных столбцов».
Или было бы лучше просто поместить ВСЕ изстолбцы в кластерный индекс (включая два, которые не идентифицируют запись)?Столбцы varchar обновляются чаще (несколько раз в день, а не раз в месяц), поэтому я бы хотел, чтобы они не попадали в кластерный индекс, но я думаю, что они достаточно глубоки, чтобы не влиять надерева индексов достаточно, чтобы вызвать любое изменение баланса при изменении.
Итак, существует ли эффективный способ настроить эти индексы, чтобы все столбцы этой таблицы были доступны через индекс, не возвращаясь к таблице