Когда я выбираю только ИД, я не вижу кластерного сканирования индекса. Но когда я выбираю столбец XML, я вижу кластерное сканирование индекса.Сканирование индексированных кластеров
Разве индекс не используется только для предложения Where, но не для предложения select?
declare @LenderID int = null,
@LenderCode varchar(64)= null
--Add Lender Search as in Lender Maintenance
if @LenderID is not NULL
Select @LenderCode = CODE_TX from LENDER
where ID = @LenderID and PURGE_DT IS NULL
declare @StartDate datetime2 = '1/22/2014 12:00:00 AM',
@EndDate datetime2 = '1/24/2014 12:00:00 AM'
select rh.id
from REPORT_HISTORY rh
where
(
(@StartDate is NULL or @EndDate is NULL)
or
(RH.CREATE_DT between @StartDate and @EndDate)
)
and
(
RH.LENDER_ID = @LenderID
or
@LenderCode is NULL
)
Также удивительно, что база данных не может обрабатывать положение как @StartDate является NULL или @EndDate является NULL и идет для сканирования индекса, он должен игнорировать поле, если оно передается в нуль.
Заранее спасибо
Можете ли вы разместить два * фактических плана выполнения где-нибудь? –
Он генерирует огромный xml, я попробую – Roninn
Как вы определили свой кластеризованный индекс? Можете ли вы опубликовать скрипт, который его определяет? Также будет полезен скриншот фактического плана выполнения. –