хорошо подобранный кластеризованный индекс может творить чудеса для вашей работы. Зачем? Кластерный индекс определяет, как ваши данные физически хранятся на вашем жестком диске. Выбор хорошего кластерного индекса гарантирует, что вы получите Sequential IO вместо Random IO. Поэтому это большой выигрыш в производительности, поскольку узким местом в большинстве настроек базы данных являются жесткие диски и IO-действие.
Постарайтесь создать свой кластеризованный индекс по значению, которое много используется при объединении.
Если вы просто положили его на основной ключ, производительность будет по-прежнему улучшаться, так как NON_Clustered будет использовать Clustered для операции поиска, что позволит избежать сканирования таблиц.
Надеется, что это отвечает на ваш вопрос
Просматривая базу данных [Я унаследовал ее :(], и в большинстве таблиц есть много разумных индексов, но нет индекса PK/Clustered. – BlueChippy
Возможно, это не так. Вы должны взять копию, попробовать применить кластеризованный индекс , и запускайте реалистичную рабочую нагрузку из своей системы против него. Также - a) Вам не нужно будет комментировать непосредственно ваши собственные вопросы/ответы - если у вас есть больше, чтобы добавить, используйте ссылку редактирования, и b) вам следует избегать объединения Первичные ключи и кластерные индексы. Эти два понятия различны. –
Операция select в куче (таблица без кластеризованного индекса), которая требует _RID lookup_, вместо этого использует поиск _bookmark_, когда есть кластерный индекс. Существует некоторая аргументация, что поиск по закладкам менее эффективен, чем поиск RID. Все это относится к конкретным сценариям и рабочим нагрузкам. Вам действительно нужно провести анализ в тестовой системе. Соблюдайте и сравнивайте планы и производительность запросов. –