Составной первичный ключ и дополнительные индексы
В SQL Server 2005 у меня есть таблица с двумя столбцами: parent_id (int)
и child id (int)
. Я хочу сделать из них составной ключ, потому что я хочу только один экземпляр для каждой возможной комбинации в таблице.
Большинство операций поиска будут выполняться в поле parent_id
, некоторые из child_id
и только спорадические в обоих полях вместе.
Я планировал сделать индекс в поле parent_id
и, возможно, также в поле child_id
. Является ли это значимым или SQL Server 2005 способен использовать кластерный составной первичный ключ для индексированных запросов только на одном столбце (в основном на parent_id
), и поэтому индекс не нужен/не доступен?
Ответы
Ответ 1
Сделать составной первичный ключ (parent_id, child_id) для обеспечения уникальности. SQL Server может использовать композит для поиска только для обоих столбцов или только для родительского элемента, но он не может использовать его для поиска только в child_id. Если вам это нужно, нужно создать отдельный индекс для child_id.