Нет, SQL Server не создает автоматически некластеризованные индексы.
Кластерный индекс создается автоматически на основе первичного ключа, если в вашем операторе CREATE TABLE
не указано иное.
Да, я бы порекомендовал индексировать столбцы с внешним ключом, потому что они наиболее вероятны для JOIN / поиска с использованием IN
, EXISTS
и т. Д. Однако следует помнить, что индекс для набора с низким количеством элементов значения (например, пол) будут относительно бесполезными, потому что разница в значениях недостаточна.
Компромисс со всеми индексами заключается в том, что они могут ускорить поиск данных, но замедлить вставку / обновление / удаление данных. Есть также обслуживание, которое необходимо выполнить, потому что они могут быть фрагментированы (например, жесткие диски), но также могут не привыкнуть со временем. Индексы также занимают место на диске.