составной индекс: имеет ли значение порядок столбцов в sql server / linq to sql? - PullRequest
0 голосов
/ 15 февраля 2012

Я в Visual Studio, ищу создание составного индекса по 2 столбцам для нескольких таблиц. Есть 2 столбца: UserID находится во всех таблицах и действует как внешний ключ; затем каждая таблица имеет свой собственный ключ для ссылки на части объекта, такие как телефон, адрес ... Вот так:

TablePhones:
PhoneID  | UserID | PhonePrefix | PhoneNumber | PhoneExtention

TableAddresses:
AddressID | UserID | AddressStreet1 | AddressStreet2 | AddressCity...

Обратите внимание, что пользователи могут иметь более 1 адреса и более 1 номера телефона.

Я использую linq to sql и запросы where для получения объектов выглядят так:

read queries:
where x.UserID == TheUserID

update/delete queries:
where x.UserID == TheUserID && x.PhoneID = ThePhoneID

В данный момент первичные ключи находятся на PhoneID и AddressID, и я собираюсь создать составные индексы для PhoneID / UserID и AddressID / UserID. Является ли порядок столбцов в базе данных точным или нет, или я должен переместить UserID на первую позицию для всех таблиц.

Спасибо за предложения.

1 Ответ

2 голосов
/ 15 февраля 2012

Порядок столбцов в таблице не имеет значения;по крайней мере для SQLServer.Важно то, в каком порядке поля перечислены в индексе.Запросы с условиями на ведущий столбец [ы] очень выиграют от индекса.

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

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