Почему поиск RID (закладки) не отображается в плане выполнения?
Я попытался изучить поиск RID (foremerly bookmark), создав таблицу кучи:
CREATE TABLE [dbo].[CustomerAddress]
(
[CustomerID] [int],
[AddressID] [int],
[ModifiedDate] [datetime]
);
GO
CREATE NONCLUSTERED INDEX x
ON dbo.CustomerAddress(CustomerID, AddressID);
Затем я попытался выполнить следующий запрос, чтобы проверить план выполнения:
SELECT CustomerID, AddressID, ModifiedDate
FROM dbo.CustomerAddress
WHERE CustomerID = 29485;
Но, используя MSSM, я не могу увидеть поиск RID в плане выполнения:
Я использую SQL Server 2008R2 (версия 10.50.4000.0) пакет обновления 2.
PS: этот вопрос основан на статье Аарона Бертрана .1 ответ:
Проверка таблицы означает, что SQL Server не использует ваш индекс. Он читает из "кучи". "Куча" - это хранилище данных для таблиц без кластеризованного индекса.
Поскольку он вообще не касается индекса, SQL Server не нуждается в поиске RID для перехода от индекса к куче.
Причина, вероятно, в том, что по оценкам SQL Server для одного клиента может быть более +/- 100 строк. Оптимизатор будет стараться избегать большого количества поисков.
Вы можете попробовать еще раз с помощью индексируйте только
(CustomerID)
, или добавляяAddresID
к вашему предложениюwhere
.