已经打完sp2补丁。
tableA/tableB两个表,存储过程大致:
create proc proc_getA
@id int
as
set nocount on
declare @t table (a_id int)
insert into @t (a_id) select a_id from tableA where id = @id
select top 10 ...
from tableB a left join @t t on a.a_id=t.a_id
where ...
order by ...
GO
Management studio显示io信息:
表 '#AAD188B4'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'tableA'。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '#AAD188B4'。扫描计数 1,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'tableB'。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
sys.dm_exec_query_stats显示:
第一条sql,执行次数3595092,总逻辑读3127326921,总逻辑写50979,相当于平均每次870逻辑读
第二条sql,执行次数25360185,总逻辑读60966871434,总逻辑写0,相当于平均每次2404次逻辑读
问题,为什么差距这么大呢?
查明原因,分区表执行计划问题,谢谢。
分区表执行计划问题