Подтвердить что ты не робот

Что такое поиск закладок на сервере Sql?

Я пытаюсь оптимизировать запрос, который ищет исторические данные. Я использую анализатор запросов для поиска Плана выполнения и обнаружил, что большая часть моей стоимости запроса связана с тем, что называется "Закладка". Я никогда не видел этого node в плане выполнения раньше и не знаю, что это значит.

Это хорошо или плохо в запросе?

4b9b3361

Ответ 1

Поиск по закладкам - это процесс поиска фактических данных в таблице SQL на основе записи, найденной в некластеризованном индексе.

Когда вы ищете значение в некластеризованном индексе, а вашему запросу требуется больше полей, чем часть листа индекса node (все поля индекса плюс любые возможные столбцы INCLUDE), тогда SQL Server должен перейдите на страницу фактических данных - то, что называется поиском закладки.

В некоторых случаях это единственный путь - только если ваш запрос потребует всего лишь одного поля (а не целой группы), может быть хорошей идеей ВКЛЮЧИТЬ это поле в некластерном индекс. В этом случае уровень node на уровне листа некластеризованного индекса будет содержать все поля, необходимые для удовлетворения вашего запроса (индекс покрытия), и поэтому поиск по закладке больше не понадобится.

Марк

Ответ 2

Это a NESTED LOOP, который объединяет некластеризованный индекс с самой таблицей указателя строки.

Случается для таких запросов:

SELECT  col1
FROM    table
WHERE   col2 BETWEEN 1 AND 10

если у вас есть индекс на col2.

Индекс на col2 содержит указатели на индексированные строки.

Итак, чтобы получить значение col1, движок должен сканировать индекс на col2 для значений ключа от 1 до 10, а для каждого индексного листа - таблицу используя указатель, содержащийся в листе, чтобы узнать значение col1.

В этой статье указывается, что термин Bookmark Lookup SQL Server 2000, который заменяется на NESTED LOOP между индексом и таблицей в SQL Server 2005 и выше

Ответ 3

От MSDN относительно закладок:

Оператор Bookmark Lookup использует закладки (идентификатор строки или ключ кластеризации) в найдите соответствующую строку в таблицы или кластеризованного индекса. Аргумент столбец содержит метку закладки используется для поиска строки в таблице или кластеризованный индекс. Аргумент столбец также содержит имя таблицы или кластеризованного индекса, в котором строка просматривается. Если СО ПРЕДВАРИТЕЛЬНЫЙ в столбце "Аргумент", процессор запросов определил что оптимально использовать асинхронный предварительная выборка (чтение вперед) при поиске закладок в таблице или кластеризованных индекс.