首页 新闻 会员 周边 捐助

sql server 中,相同的查询代码在两个结构相同,数据不同的数据库中,查询时间不一样

0
悬赏园豆:30 [待解决问题]

注:两个数据库,结构一摸一样,并且在一个服务器上,数据库B的数据量只有数据库A的3分之一,同样的查询代码,在数据量少的数据库B上的运行时间却要比数量量大的数据库A上的运行时间还要慢。
请问各位大神,这应该是什么原因,从什么方面入手?

数据库A--运行结果如下花费0秒
(21 行受影响)
表 '表A'。扫描计数 61,逻辑读取 260184 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '表B'。扫描计数 21,逻辑读取 3849 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '表C'。扫描计数 21,逻辑读取 1272 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

数据库B---运行结果如下花费20秒
(16 行受影响)
表 '表A'。扫描计数 1,逻辑读取 3560507 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '表B'。扫描计数 0,逻辑读取 8066 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 '表C'。扫描计数 1,逻辑读取 347 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

问题补充:

我查了 执行计划
数据库A的
select --排序----哈希匹配--后面还有很多--最后才是嵌套循环

数据库B的
select---排序---直接就是嵌套循环了

数据库A的执行计划比数据库B的要长很多
麻烦大神看看这个是什么原因造成的

很好记的主页 很好记 | 初学一级 | 园豆:172
提问于:2018-09-15 10:52
< >
分享
所有回答(3)
0

数据库B的逻辑读太高了,估计是索引配置有问题,建议看一下执行计划

dudu | 园豆:29732 (高人七级) | 2018-09-15 12:08
0

第二个逻辑读取数是第一个的10倍啊

程序员修炼之旅 | 园豆:976 (小虾三级) | 2018-09-15 13:16
0

检查索引,试试

DanBrown | 园豆:1321 (小虾三级) | 2018-09-16 08:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册