Выполняет ли поиск столбца первичного ключа в таблице быстрее, чем поиск
столбец без первичного ключа из-за кластерного индекса по умолчанию на первичном
ключи в SQL Server?
Поскольку оптимизатору все равно, поддерживает ли индекс ограничение или нет, я перефразирую вопрос следующим образом:
Выполняет ли поиск с использованием столбцов ключей кластерного индекса быстрее, чем поиск через
столбец (ключи) некластеризованного индекса?
Поиск по кластерному индексу на основе таблицы на диске - это самый быстрый способ вернуть всю строку 1) для одноэлементных поисков и 2) для поиска по ключевому диапазону. Это минимизирует количество логических операций чтения, необходимых для поиска и извлечения строк.
SQL Server использует кластеризацию по умолчанию для индексов первичного ключа, чтобы использовать это преимущество в производительности и поощрять практику, согласно которой все таблицы должны иметь кластеризованный индекс. Кроме того, поскольку ключ кластеризованного индекса неявно включается во все некластеризованные индексы в качестве локатора строк, повышается вероятность того, что некластеризованные индексы покрывают запросы.
Это не означает, что первичным ключом всегда должен быть кластерный индекс. Может быть лучший выбор, когда запросы чаще всего используют другие столбцы в предикатах предложения join / where.