2010-02-01 2 views
2

Требуется ли «вычисляемая колонка» SQL Server «persistence» для эффективной индексации?Требуется ли «вычислительная колонка» SQL Server «постоянство», чтобы он мог быть проиндексирован эффективно?

Это комбинация столбцов «Имя» и «Уменьшенная» (вычисленная). Поэтому я не верю, что это касается точности, упомянутой в статье MSDN.

+1

Неустановленный вычисленный столбец * не может быть проиндексирован ... так что «Да» (или он не будет работать вообще). И постоянный вычисленный столбец также должен быть детерминированным вычисленным столбцом ... что все имеет смысл в конце, учитывая, что индексы необходимо обновить (и таким образом отслеживать исходное значение [s]). – 2012-06-16 20:16:55

ответ

3

Вопреки тому, что сказал Митч, вам не нужен столбец для сохранялось индекс должен быть создан (то, что в статье MSDN говорится, что, если вычисляемый столбец является не детерминированной, то он будет отмечен сохранялось прежде чем он может быть рассмотрен для включения в индекс.

Как к исходный вопрос, я бы ожидал, что эффективность индекса будет такой же хорошей, как и для любого другого столбца - какая метрика w e для повышения эффективности? Я, конечно, не ожидал, что это займет больше места. В ходе INSERT/UPDATE возникнут некоторые накладные расходы на вычисление, но у вас будет тот факт, что столбец был помечен как сохраненный.

Не должно быть никакой разницы, когда дело доходит до запроса через индекс. Сама структура индекса будет построена одинаково, будь то реальный столбец, постоянный вычисленный столбец или неустановленный вычисленный столбец.

(Надеюсь, окончательное редактирование) - может быть небольшой удар по производительности, если вы извлекаете вычисленный столбец, а само вычисление является дорогостоящим по сравнению с, например, сетевые накладные расходы или другие затраты на ввод-вывод. Но в случае преобразования в нижний регистр я не ожидал, что смогу это заметить.

+0

Я уже отредактировал свой ответ ... –

+0

+1 от меня. ..... –

+0

Метрическая - улучшение производительности. Это комбинация столбцов Name и LoweredName (вычисленная). – jameszhao00

1

Нет, но есть определенные условия, которые должны быть выполнены для того, чтобы создать индекс по вычисляемого столбца: BOL - Creating Indexes on Computed Columns

+0

+1 Для ссылки. Примечание к self: 'varchar (max)' не индексируется, не вычисляется или нет: -/ – 2012-06-16 20:16:16

 Смежные вопросы

  • Нет связанных вопросов^_^