2013-05-02 5 views
1

У меня очень большой стол с двумя индексами на нем, но нет индекса PK (кластеризованный).Увеличивает ли производительность некластеризованного индекса при наличии кластерного (PK) индекса?

Увеличило бы производительность двух индексов, если бы на таблице был также кластеризованный индекс, даже если мне нужно «придумать» один из столбца идентификации?

+0

Просматривая базу данных [Я унаследовал ее :(], и в большинстве таблиц есть много разумных индексов, но нет индекса PK/Clustered. – BlueChippy

+0

Возможно, это не так. Вы должны взять копию, попробовать применить кластеризованный индекс , и запускайте реалистичную рабочую нагрузку из своей системы против него. Также - a) Вам не нужно будет комментировать непосредственно ваши собственные вопросы/ответы - если у вас есть больше, чтобы добавить, используйте ссылку редактирования, и b) вам следует избегать объединения Первичные ключи и кластерные индексы. Эти два понятия различны. –

+0

Операция select в куче (таблица без кластеризованного индекса), которая требует _RID lookup_, вместо этого использует поиск _bookmark_, когда есть кластерный индекс. Существует некоторая аргументация, что поиск по закладкам менее эффективен, чем поиск RID. Все это относится к конкретным сценариям и рабочим нагрузкам. Вам действительно нужно провести анализ в тестовой системе. Соблюдайте и сравнивайте планы и производительность запросов. –

ответ

1

хорошо подобранный кластеризованный индекс может творить чудеса для вашей работы. Зачем? Кластерный индекс определяет, как ваши данные физически хранятся на вашем жестком диске. Выбор хорошего кластерного индекса гарантирует, что вы получите Sequential IO вместо Random IO. Поэтому это большой выигрыш в производительности, поскольку узким местом в большинстве настроек базы данных являются жесткие диски и IO-действие.

Постарайтесь создать свой кластеризованный индекс по значению, которое много используется при объединении.

Если вы просто положили его на основной ключ, производительность будет по-прежнему улучшаться, так как NON_Clustered будет использовать Clustered для операции поиска, что позволит избежать сканирования таблиц.

Надеется, что это отвечает на ваш вопрос

0

Это больше похож на противоположном, некластеризованные индексы страдают от кластерных индексов:

http://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key

Однако, если вам удадутся заменить один из ваших некластерных индексы кластеризованных индексов, общая производительность может увеличиться ... или уменьшить. Действительно зависит от вашей рабочей нагрузки.

Смежные вопросы