Кластерный индекс против использования некластерного индекса - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в оптимизации запросов в T- SQL, и я немного запутался с одной из реализаций.

Сценарий был объяснен здесь: у меня есть эта таблица (Таблица A), на которой происходят регулярные вставки, без обновлений - только вставки, когда данные перемещаются в другую таблицу (таблица B) на основе фильтра по определенному столбцу в таблице A (Col-1).

Два столбца в таблице A я сосредотачиваюсь на Col-1 (столбец идентификаторов) и Col-2 (nvarchar(20) - и имеет дубликаты).

Col-2 - это файл, на котором я фильтрую свои записи при перемещении данных из Таблица A - Таблица B.

Должен ли я определять кластерный индекс на Col-1 и некластеризованный индекс на Col-2, поскольку я фильтрую на Col-2; или я должен определить некластеризованный индекс только для Col-2, чтобы повысить производительность запросов?

Или я должен сохранить таблицу как кучу и определить только некластеризованный индекс для Col-2.

Более того , определение кластеризованного индекса и сохранение таблицы в виде B-дерева снижают производительность, так как мы добавляем данные в таблицу - еженедельно через вставки.

Спасибо за помощь.

1 Ответ

0 голосов
/ 21 апреля 2020

Как уже сказали многие, трудно сказать однозначно, что будет лучшим решением без тестирования. Однако вы говорите, что фильтруете по col2, прежде чем перемещать данные. В зависимости от того, какой процент этих записей перемещен, я бы предложил начать с кластеризации по уникальному столбцу col1. Затем создайте некластеризованный индекс на col2. Одним из преимуществ некластеризованного индекса является то, что вы можете сделать его фильтрованным индексом с предложением WHERE. Так, например, если только 10% ваших записей имеют значение col2 из нескольких вариантов, которые вас интересуют, индекс WHERE col2 IN (val, val2, val3) будет в 10 раз меньше и, следовательно, быстрее к нему доступ.

Если вы go этот маршрут, убедитесь, что предложение WHERE в вашем SELECT соответствует предложению WHERE, которое вы указали в индексе.

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