Вопрос о том, как прочитать План выполнения SQL

Я выполнил запрос и включал Фактический План выполнения. Существует одно Соответствие Хеша, которое представляет интерес для меня, потому что это - использование поддерева, которое ищет Индексное Сканирование вместо индекса. Когда я мышь по этому Соответствию Хеша там являюсь разделом, названным "Тестовая Невязка". Я предположил, что это - любые значения, на которых я присоединяюсь. Я корректен здесь или являюсь там лучшим объяснением того, что это означает?

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

6
задан Dustin Laine 8 June 2011 в 16:27
поделиться

4 ответа

Присоединение HASH вообще (всегда?) Используйте сканирование или, по меньшей мере, сканирование диапазона. Хэш-присоединение работает путем сканирования в левом и правом присоединении таблиц (или диапазон в таблицах) и создания хэш-хеша в памяти, которая содержит все значения «видели» по сканированию.

Что произошло в вашем случае: это: Qo заметила, что он может получить все значения столбца C из не кластеризованного индекса, который будет содержать этот столбец (в виде ключа или в качестве включенного столбца). Быть не кластером индексом, вероятно, довольно узкий, поэтому общее количество IO для сканирования всего не кластеризованного индекса не преувеличивается. Qo также считает, что система имеет достаточно оперативной памяти для хранения хэш-таблица в памяти. При сравнении стоимости этого запроса (сканирование не кластеризованного индекса в конечном итоге для, скажем, 10000 страниц) со стоимостью вложенного цикла, которая использовала SEREKS (скажем, 5000 зондов на 2-3 страницах каждый) Сканирование выиграло, как требуется меньше IO. Конечно, в значительной степени предполагают предположение, но я пытаюсь представить дело с точки зрения Qo, а план, вероятно, оптимален.

Факторы, которые способствовали этому конкретному выбору плана, были бы:

  • большое количество оценочных кандидатов на правой стороне присоединения
  • наличия столбца присоединения в узком не кластерном индексе для левой стороны
  • ​​Множество RAM

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

4
ответ дан 9 December 2019 в 20:43
поделиться

Этот пост блога, вероятно, ответит на ваш первый вопрос.

Что касается вашего второго, сканирования индекса могут быть выбраны оптимизатором в ряде ситуаций. В верхней части головы:

  • Если индекс очень маленький
  • , если большинство строк в индексе будут выбраны по запросу

  • , если вы используете функции в разделе «Откуда» вашего запроса

Для первых двух случаев более эффективно делать сканирование, поэтому оптимизатор выбирает его в поисках. Для третьего случая оптимизатор не имеет выбора.

4
ответ дан 9 December 2019 в 20:43
поделиться

1 / Аш-матч означает, что требуется хэш столбцов, используемых в присоединении к равенству, но необходимо включить все остальные столбцы, вовлеченные в соединение (для>, и т. Д.), чтобы они могли быть также проверены. Это то, где приходят остаточные столбцы.

2 / Ищите индекс можно сделать, если он может пойти прямо к строкам, которые вы хотите. Возможно, вы применяете расчет к столбцам и используете это? Затем он будет использовать индекс как меньшую версию данных, но все равно нужно будет проверить каждую строку (применение расчета на каждом).

2
ответ дан 9 December 2019 в 20:43
поделиться

Ознакомьтесь с отличными статьями о планах выполнения на simple-talk.com:

Они также получите бесплатную электронную книгу Планы выполнения SQL Server для загрузки.

2
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: