Нужен ли столбцам rowversion/timestamp в SQL Server некластеризованный индекс при использовании EF code-first?

Во всех моих таблицах есть столбец rowversion, который EF использует для проверки оптимистичного параллелизма. Должен ли я создать некластеризованный индекс для этого столбца для более быстрого поиска данных? Каждая таблица также имеет кластеризованный первичный ключ с именем Id. Всякий раз при обновлении данных будет ли EF/SQL сначала пытаться найти строку на основе идентификатора, а затем запускать проверку версии строки?


person Mark13426    schedule 24.04.2014    source источник
comment
Да. Все остальное не имело бы смысла.   -  person Mitch Wheat    schedule 24.04.2014
comment
Для большей ясности: «да» на второй вопрос, «нет» на первый.   -  person dean    schedule 24.04.2014


Ответы (1)


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

Чтобы ответить на такие вопросы эмпирически, сравните планы выполнения с рассматриваемым индексом и без него.

person usr    schedule 24.04.2014