2012-02-12 7 views
0

У меня есть таблица с 3 колонками:какой столбец должен я индекс

  • int UserID
  • datetime WorkDate
  • string WorkDetail

Каждый пользователь будет иметь один WorkDetail за WorkDate. Я использую L2S и мое, где положение соответствует UserID и WorkDate вроде этого:

where t.UserID == TheUserID && t.WorkDate.Date == TheDate.Date 

Должен ли я сохранить порядок параметра, где, как это? Должен ли я индексировать дату или userID?

Спасибо.

ответ

0

Если каждый пользователь должен иметь только один WorkDate то сделать, что первичный ключ в базе данных. Это обеспечит целостность данных и обеспечит индекс за один раз.

+0

действительно ли создание первичного ключа автоматически создает индекс? – frenchie

+0

Создание WorkDate первичного ключа? Не уникально, так как многие пользователи могут иметь один и тот же WorkDate. – frenchie

+0

Нет, вы должны сделать идентификатор пользователя id + вместе вместе первичной (составной) клавишей. Да, у ПК всегда есть индекс. – DamienG

1

Вы действительно должны индексировать как дату, так и идентификатор пользователя. Как минимум, просто проиндексируйте идентификатор пользователя.

+0

вы рекомендуете составной индекс? – frenchie

0

На данный момент я бы назвал индекс UserID.

Если вы обнаружите, что производительность лучше с дополнительным индексом даты, продолжайте и создайте ее.

Ничто не мешает вам добавить дополнительный индекс даты в будущем, если вам нужно искать по дате независимо от пользователя.

0

Если вы говорите, каждый пользователь будет иметь 1 деталь для даты, то он должен быть уникальным индексом на (USERID, workDate)

+0

вы рекомендуете составной индекс? – frenchie

+0

Да, составной уникальный индекс (еще раз, уникальный, если один пользователь может иметь не более 1 детали для даты) – a1ex07

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