sqlserver 索引,学术不精,这个现象有点怪

新人第一次发博客求助
最近客户数据库发现一怪现象
首先附一sql语句

select  ID from YQ_KQ_FormGroup  with(nolock)  where  DisplayOrder1>='2017-01-01' AND DisplayOrder1<='2017-04-30' AND DisplayOrder2<='2017-04-30' AND ID in(  select GroupID from YQ_KQ_FormData with(nolock) where FieldName='FormType' and FieldValue='0'  InterSect select GroupID from YQ_KQ_FormData with(nolock) where FieldName='EmployeeGUID' and FieldValue in (select ID from  YQ_KQ_EmployeeInfo with(nolock) where  DeptID in ( select ID from YQ_CM_Department where DeptPath like '%,1,%' ) ))  and ApprovalStatus=-1 and ApprovalOrNot=1 order by DisplayOrder1

SQL Server 分析和编译时间:
CPU 时间 = 111 毫秒,占用时间 = 111 毫秒。

(929 行受影响)
表 ‘Worktable’。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormGroup’。扫描计数 1,逻辑读取 732 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormData’。扫描计数 16879,逻辑读取 2228257 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_EmployeeInfo’。扫描计数 1,逻辑读取 9 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_CM_Department’。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:
CPU 时间 = 23400 毫秒,占用时间 = 23449 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

929条结果 奇慢无比,YQ_KQ_FormData 表有24w行数据,YQ_KQ_FormGroup有1.6w行,YQ_KQ_EmployeeInfo有354,YQ_CM_Department有52行
这里写图片描述
现将这个主键聚集索引删除,重新执行上面的sql语句

SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 117 毫秒,占用时间 = 117 毫秒。

(929 行受影响)
表 ‘Worktable’。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormGroup’。扫描计数 1,逻辑读取 732 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormData’。扫描计数 2,逻辑读取 493 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_EmployeeInfo’。扫描计数 1,逻辑读取 9 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_CM_Department’。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:
CPU 时间 = 31 毫秒,占用时间 = 73 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

YQ_KQ_FormData 的逻辑读取数下降了这么多,重新添加这个主键索引 再次执行

SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 76 毫秒,占用时间 = 76 毫秒。

(929 行受影响)
表 ‘Worktable’。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormGroup’。扫描计数 1,逻辑读取 732 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_FormData’。扫描计数 2,逻辑读取 493 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_KQ_EmployeeInfo’。扫描计数 1,逻辑读取 9 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 ‘YQ_CM_Department’。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:
CPU 时间 = 47 毫秒,占用时间 = 119 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
附第一次执行开销图
这里写图片描述
第二次执行开销图
这里写图片描述

无意中删除索引 速度快了好多倍,实在看不出缘由,求大神指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值