Отдельный индекс для столбцов DateTime в составном первичном ключе - PullRequest
0 голосов
/ 24 октября 2011

Сотрудник создал таблицу, подобную этой:

EmpID
ShiftStartDateTime
ShiftEndDateTime
PayRate
AnotherColumn
AnotherColumn

Первичный ключ включает все столбцы (не знаю, почему, мне нужно обсудить с ним).

Запросы будут в основном включать фильтрацию по столбцам EmpID и StartDateTime.

Предполагая, что все столбцы должны быть частью первичного ключа, если в столбцах EmpID и StartDateTime будут добавлены отдельные индексы.

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Прежде всего, наличие всех полей в первичном ключе выглядит для меня очень подозрительно.Если это также кластеризованный индекс, у вас будут большие издержки при вставке / обновлении записей.Обычно вы никогда не обновляете значение первичного ключа.Что касается вашего вопроса, это зависит от порядка столбцов в вашем ПК.Если это EmpID, ShiftStartDateTime,ShiftEndDateTime,PayRate,AnotherColumn, AnotherColumn и ваши запросы будут фильтроваться по EmpID and StartDateTime, то этот индекс будет использоваться, и вам не понадобятся дополнительные (что будет огромной тратой пространства)

2 голосов
/ 24 октября 2011

Да.

Я бы добавил один индекс для обоих полей.

Индекс будет использоваться только для поиска , если поля, по которым вы фильтруете, являютсяпервые в индексе.

Подумайте о телефонной книге, где вы не можете легко найти всех по имени Джон, но вы можете легко найти людей с фамилией «Смит», а затем найти все"Джон" в этом списке. Вам нужен первый ключ, чтобы иметь возможность использовать второй.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...