2010-10-05 4 views
1

У меня есть вопрос, не могли бы вы мне помочь? Я создал базу данных для web-cms в таблице User_, которая включает в себя: UserID, Username, Password, FirstName, LastName, ... _, что является лучшим выбором для создания индекса на нем, имени пользователя или FirstName и Фамилия? Или они оба? По умолчанию UserID является кластеризованным индексом таблицы пользователей, поэтому следующий индекс должен быть некластеризованным. Но я не уверен, что UserID будет кластеризованным индексом. Поскольку это веб-сайт, и многие пользователи могут ежедневно регистрировать или удалять свои учетные записи, является ли это хорошим выбором для создания кластерного индекса на UserID? Я использую сервер sql 2008индекс проектирования для базы данных web-cms

+1

Не уверен, что я полностью понимаю ваш вопрос, но я бы с легкостью рассмотрел некластеризованный указатель на поля имени пользователя и пароля, поскольку эти два поля будут запрашиваться при входе пользователя в систему. Создать некластеризованный указатель [IndexName ] ON [Имя_таблицы] ([Имя пользователя], [Пароль]) Кстати, вы должны изменить имя своего столбца «Пароль», поскольку пароль является зарезервированным словом в SQL. Кроме того, любые запросы, содержащие этот столбец, не будут отображаться в Profiler, поскольку вы используете слово «пароль». – Sage

+0

Кроме того, если вы специально запрашиваете столбец (EG: «Where [ColumnName] =« Boo »), я бы тоже не стал беспокоиться о добавлении индекса в этот столбец. – Sage

ответ

1

Вы должны определить кластерные индексы в полях, которые часто запрашиваются последовательно или содержат большое количество различных значений или используются в запросах для таблиц joion. Таким образом, это обычно означает, что первичный ключ является хорошим кандидатом.

Некластеризованные индексы хороши для поля, которые используются в предложении where.

Определение того, какие поля вы создаете индексы, является тем, что очень специфично для вашего приложения. Если у вас есть очень важные запросы, которые используют поля имени и фамилии, я бы сказал «да», иначе это может не стоить усилий.

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

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