select rd.DeptId, c.*, rd.CertAmt from p_certif as c inner join p_instr as rd on c.Detailid=rd.Detailid inner join p_recv as r on r.Recvid=rd.recvId where 1=1 and r.RegTime >='2014/3/21' and r.RegTime<'2014/4/1' order by CorpName, c.Idx 这个语句一执行直接就卡起。超时了。
选中你的sql,然后ctrl+L贴出来执行计划
select rd.DeptId, c.*, rd.CertAmt from p_certif as c inner join p_instr as rd on c.Detailid=rd.Detailid inner join p_recv as r on r.Recvid=rd.recvId where 1=1 and r.RegTime >='2014/3/21' and r.RegTime<'2014/4/1' order by CorpName, c.Idx执行计划显示pcertif和p_recv 都是聚集索引扫描, 也就是说表上有聚集索引了,但是查询时没有用到聚集索引, 那么, p_recv表上的RegTime字段,还有 Detailid表上的p_certif字段,应该加上非聚集索引试试看
select * from sys.dm_db_index_physical_stats(DB_ID('你的数据库名字'),OBJECT_ID('表名'),null,null,'detailed')查询结果相关字段说明avg_fragmentation_in_percent 逻辑碎片(索引中的无序页)的百分比。 fragment_count 索引中的碎片个数(物理上连续的叶页)数量。 avg_fragment_size_in_pages 索引中一个碎片的平均页数。alter index 索引名字 on 表明 rebuild WITH (ONLINE = ON)
inner join p_instr as rd on c.Detailid=rd.Detailid
inner join p_recv as r on r.Recvid=rd.recvId where 1=1 and r.RegTime >='2014/3/21' and r.RegTime<'2014/4/1' order by CorpName, c.Idx
这个语句一执行直接就卡起。超时了。
inner join p_instr as rd on c.Detailid=rd.Detailid
inner join p_recv as r on r.Recvid=rd.recvId where 1=1
and r.RegTime >='2014/3/21' and r.RegTime<'2014/4/1'
order by CorpName, c.Idx执行计划显示pcertif和p_recv 都是聚集索引扫描,
也就是说表上有聚集索引了,但是查询时没有用到聚集索引,
那么, p_recv表上的RegTime字段,还有 Detailid表上的p_certif字段,应该加上非聚集索引试试看
逻辑碎片(索引中的无序页)的百分比。
fragment_count
索引中的碎片个数(物理上连续的叶页)数量。
avg_fragment_size_in_pages
索引中一个碎片的平均页数。alter index 索引名字 on 表明 rebuild WITH (ONLINE = ON)
另外建议你改变表结构,只在表中保存文件的目录,文件放到服务器上,不要存在表里面,即使一定要存在表里面,也要分表存,把原来的表拆成2张,把那些大字段放到新建的一张表里面
DBCC DBREINDEX (TableName1,Index_Name1)