«То, что вы запрашиваете чаще всего», не обязательно является лучшей причиной для выбора индекса для кластеризации. Самое главное, что вы запрашиваете, чтобы получить несколько строк. Кластеризация - это подходящая стратегия, позволяющая эффективно получать несколько строк за наименьшее количество операций чтения с диска.
Лучший пример - история продаж для клиента.
Скажем, у вас есть два индекса в таблице продаж, один для клиента (и, возможно, дата, но точка применима в любом случае). Если вы чаще всего запрашиваете таблицу по CustomerID, вам нужно, чтобы все записи о продажах клиента вместе давали одно или два чтения с диска для всех записей.
Первичный ключ, OTOH, может быть суррогатным ключом или SalesId, но в любом случае уникальным значением. Если бы это было кластеризовано, это было бы бесполезно по сравнению с обычным уникальным индексом.
РЕДАКТИРОВАТЬ: Давайте возьмем эту конкретную таблицу для обсуждения - она покажет еще больше тонкостей.
«Естественный» первичный ключ - это, по всей вероятности, парентид + childid. Но в какой последовательности? Парентид + childid не более уникален, чем childid + парентид. Для целей кластеризации, какой порядок больше подходит? Можно было бы предположить, что это должен быть parentid + childid, так как мы захотим спросить: «Для данного элемента, каковы его составляющие»? Но не маловероятно ли, что вы захотите пойти другим путем и спросить: «Для данного компонента, из каких элементов он является компонентом?».
Добавьте к рассмотрению «покрывающие индексы», которые содержат внутри индекса всю информацию, необходимую для удовлетворения запроса. Если это правда, то вам никогда не нужно читать остальную часть записи; поэтому кластеризация не приносит никакой пользы; достаточно просто прочитать индекс. (Кстати, это означает, что два индекса на одной и той же паре полей расположены в противоположном порядке; это может быть правильным в таких случаях. Или, по крайней мере, составной индекс для одного и индекс для одного поля для другого. )
Но это по-прежнему не диктует, что должно быть сгруппировано; что в конечном итоге, вероятно, будет определяться тем, какие запросы на самом деле должны будут получить запись для поля «Количество».
Даже для такого наглядного примера, в принципе, лучше оставить решение о других индексах, пока вы не сможете проверить их с реалистичными данными (очевидно, до производства); но спрашивать здесь спекуляции бессмысленно. Тестирование всегда даст вам правильный ответ.
Забудьте о беспокойстве по поводу замедления вставок, пока у вас не возникнет проблема (которая в большинстве случаев никогда не произойдет), и можете проверить, чтобы убедиться, что вы отказываетесь от полезных индексов для ощутимой выгоды.
Однако все еще неясно, потому что подобные соединительные таблицы также часто участвуют во множестве других типов запросов. Поэтому я бы просто выбрал один и протестировал по мере необходимости, как приложение гели, и объем данных для тестирования станет доступен.
Кстати, я бы ожидал, что в конечном итоге получится PK на парентиде + childid; неуникальный индекс childid; и первый кластер. Если вы предпочитаете суррогатный PK, то вам все равно нужен уникальный индекс для парентид + childid, кластеризованный. Кластеризация суррогатного ключа вряд ли будет оптимальной.