В SQL Server 2008 отношения ускоряют запросы? - PullRequest
4 голосов
/ 07 сентября 2011

Например, если у меня есть таблица BlogPosts и таблица PostCategory, где таблица BlogPosts имеет поле FK PostCategoryId.Могут ли отношения сделать запрос быстрее или это больше связано с качеством данных?

Как насчет того, когда включается таблица соединения?Извлеките поле PostCategoryId из таблицы BlogPosts и получите таблицу "между ними", которая называется PostsInCategories, которая имеет только 2 поля FK: BlogPostId и PostCategoryId, объединенные для формирования PK.

Улучшают ли отношения запросы там?

1 Ответ

7 голосов
/ 07 сентября 2011

Отношения внешнего ключа примерно равны обеспечению целостности данных , например убедитесь, что у вас нет дочерних строк "voodoo", у которых больше нет родительской строки, и т. д.

Отношения с внешним ключом сами по себе не повышают вашу производительность, поскольку SQL Server не автоматически создает индексы для внешних ключей.

По нескольким причинам (повышение производительности при применении ссылочной целостности и повышение производительности JOIN - см. сообщение в блоге Кимберли Триппа на тему ) это очень рекомендуемый шаг для добавления индексов во все поля внешнего ключа в вашем таблицы - и добавление этих индексов ускорит запросы, которые будут использовать эти отношения FK.

...