Да, вы поняли это в значительной степени.
Если у вас есть кластеризованный индекс, то любой некластеризованный индекс будет также включать столбцы из кластерного индекса в качестве своего «поиска» вфактические данные.
Если вы ищете значение в некластеризованном индексе и вам нужен доступ к оставшимся столбцам базовых данных, то SQL Server выполняет «поиск по закладкам» (или «поиск по ключу)") из этого некластеризованного индекса в кластеризованный индекс (который содержит сами данные в узлах конечного уровня).С кластеризованным индексом вам больше не нужны RID - и, следовательно, вам не нужно обновлять все страницы индекса при изменении RID (когда данные перемещаются с одной страницы на другую).
Закладкапоиск - довольно дорогая операция, поэтому вы можете добавить дополнительные столбцы к своим некластеризованным индексам с помощью оператора INCLUDE
.При этом ваш некластеризованный индекс будет содержать эти дополнительные столбцы на своих страницах конечного уровня, и если вам нужны только столбцы, содержащиеся в этом наборе данных, ваш запрос может быть удовлетворен из самого некластеризованного индекса (в этом случаеслучай, он называется «индексом покрытия»), и вы можете сохранить серию просмотров закладок.