Требуется ли для вычисляемого столбца SQL Server «постоянство» для его эффективной индексации? - PullRequest
2 голосов
/ 01 февраля 2010

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

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

Ответы [ 2 ]

3 голосов
/ 01 февраля 2010

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

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

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

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

1 голос
/ 01 февраля 2010

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

...