概述
新人第一次发博客求助
最近客户数据库发现一怪现象
首先附一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 毫秒。
附第一次执行开销图
第二次执行开销图
无意中删除索引 速度快了好多倍,实在看不出缘由,求大神指教
最后
以上就是温暖唇彩为你收集整理的sqlserver 索引,学术不精,这个现象有点怪的全部内容,希望文章能够帮你解决sqlserver 索引,学术不精,这个现象有点怪所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复