我不熟悉 SQL Server 中的执行计划,我试图了解 SQL Server 执行某些操作的原因。查询是:
select P.PERSONID
from KSS_V_EMPLEADOS_PER_3_CERRADOS p, COMBHOMEACCT c, LABORACCT L, kss_carga_empl_centros k, CALENDAR ca
where p.PERSONID = c.EMPLOYEEID
and c.LABORACCTID = l.LABORACCTID
and k.empleado = p.PERSONNUM
and convert(date,ca.CALENDARDTM,103) between DBO.KSS_PrimerDiaMes(convert(DATE,@DFECHA, 103)) and DBO.KSS_UltimoDiaMes(convert (DATE,@DFECHA, 103))
and convert(date,ca.CALENDARDTM,103) between p.Inicio and p.Fin
and convert(date,ca.CALENDARDTM,103) between convert(date,c.EFFECTIVEDTM,103) and convert(date,c.EXPIRATIONDTM-1,103)
and convert(date,ca.CALENDARDTM,103) between k.FECHA_INI and k.FECHA_FIN
and l.LABORLEV4NM <> k.CENTRO
Run Code Online (Sandbox Code Playgroud)
KSS_V_EMPLEADOS_PER_3_CERRADOS
是一个没有索引的视图,涉及一些表和函数。它有 12827 行
COMBHOMEACCT
c 是一个有 16771 行的表
LABORACCT
是一个有 2460 行的表
kss_carga_empl_centros
是一个有 6594 …