新人第一次发博客求助
最近客户数据库发现一怪现象
首先附一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 毫秒。
附第一次执行开销图
第二次执行开销图
无意中删除索引 速度快了好多倍,实在看不出缘由,求大神指教