(T-SQL) Кластеризованный или некластеризованный в этом сценарии

#sql #sql-server #tsql #indexing

#sql #sql-сервер #tsql #индексирование

Вопрос:

Я скоро буду сдавать экзамен, и я задаю несколько практических вопросов:

Вы создаете индексы в хранилище данных. У вас есть таблица измерений с именем Table1, которая содержит 10 000 строк. Строки используются для создания нескольких отчетов. Отчеты присоединяются к столбцу, который является первичным ключом. План выполнения содержит поиск закладок для таблицы1. Вы обнаружите, что отчеты выполняются медленнее, чем ожидалось. Вам необходимо сократить время, необходимое для запуска отчетов. Решение: вы создаете некластеризованный индекс в столбце первичного ключа, который включает столбцы поиска закладок. Соответствует ли это цели?

Да или нет

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

Мои мысли: Ответ может быть положительным для них обоих, поскольку можно ускорить запрос, используя оба метода. Если кластеризованного индекса нет, то его добавление повысит производительность. И если мы используем некластеризованный индекс, мы можем включить покрывающие столбцы и т.д. что также ускорит выполнение запроса.

Комментарии:

1. Он join уже находится в первичном ключе. Для таблицы такого размера я бы не ожидал, что какие-либо другие индексы окажут заметное влияние на производительность. Я бы поискал улучшения производительности где-нибудь в другом месте.

2. @GordonLinoff варианты просто Да или Нет. Вы хотите сказать, что вы бы выбрали «да» для кластеризованного, «нет» для некластеризованного?

3. Формулировка немного расплывчата. Однако да для некластеризованного индекса с включенными столбцами. Однако, если последующее действие предполагает, что вы создаете кластеризованный индекс с включенными столбцами, тогда нет, поскольку вы не можете включить столбцы в кластеризованный индекс. Качество некоторых из этих практических экзаменов меня иногда расстраивает.

4. Этот вопрос не имеет никакого отношения к реальности. Итак, читая подсказки в вопросе, они, вероятно, хотят, чтобы вы удалили поиск закладок. Поиск закладок происходит, когда строки найдены в некластеризованном индексе, но вам все равно нужно перейти к фактической строке, чтобы найти значение поля (которого нет в CI). Если бы вы создали NCI, который «ВКЛЮЧАЛ» эти отсутствующие поля, это, безусловно, могло бы помочь. Но в вопросе этого не сказано.