当我选择唯一的ID我没有看到聚簇索引扫描,但是当我选择一个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为空或@EndDate为NULL,去索引扫描,如果给定值为null应该忽略的领域。提前
你可以在哪里发布两个* actual *执行计划吗? –
它生成巨大的XML,我会尝试 – Roninn
你是如何定义你的聚集索引?你能发布定义它的脚本吗?实际执行计划的屏幕截图也会有所帮助。 –