积极答复者
执行效率

问题
-
/*------------------------
SELECT A.MV,A.MY*10000+A.MM*100+A.MD,A.MN,A.MP FROM CAT A WHERE A.MY*10000+A.MM*100+A.MD
IN (SELECT MAX(MY*10000+MM*100+MD) AS ET FROM CAT
WHERE A.MN=MN GROUP BY MN )
SELECT A.MN,A.ET,B.MN,B.MP
FROM (SELECT MN, MAX(MY*10000+MM*100+MD) AS ET
FROM CAT GROUP BY MN)A,
(SELECT MN,MY*10000+MM*100+MD AS ET,MN,MP
FROM CAT) B
WHERE A.MN=B.MN AND A.ET=B.ET
------------------------*/
SQL Server 分析和编译时间:
CPU 时间 = 32 毫秒,占用时间 = 74 毫秒。(8372 行受影响)
表 'Worktable'。扫描计数 3,逻辑读取 50809 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'CASMWAGT'。扫描计数 1,逻辑读取 118 次,物理读取 9 次,预读 165 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。(11 行受影响)
SQL Server 执行时间:
CPU 时间 = 281 毫秒,占用时间 = 329 毫秒。(8372 行受影响)
表 'Worktable'。扫描计数 3,逻辑读取 50809 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'CASMWAGT'。扫描计数 1,逻辑读取 118 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。(10 行受影响)
SQL Server 执行时间:
CPU 时间 = 281 毫秒,占用时间 = 631 毫秒。
星光总能为我指引方向- 已编辑 us_yunleiwang 2011年10月24日 7:49
答案
-
第二次没有物理读,是因为你的数据已经被SQL缓存。
想不想时已是想,不如不想都不想。- 已建议为答案 Molly Chen_Moderator 2011年10月27日 15:38
- 已标记为答案 Molly Chen_Moderator 2011年10月28日 10:25
全部回复
-
大家帮我分析一下哪一个执行效率更高啊,如果从IO来看,
表 'CASMWAGT'。扫描计数 1,逻辑读取 118 次,物理读取 9 次,预读 165 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
要高于
表 'CASMWAGT'。扫描计数 1,逻辑读取 118 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
但是从CPU来看
SQL Server 执行时间:
CPU 时间 = 281 毫秒,占用时间 = 329 毫秒。要低于
SQL Server 执行时间:
CPU 时间 = 281 毫秒,占用时间 = 631 毫秒。这是为什么呢
星光总能为我指引方向 -
第二次没有物理读,是因为你的数据已经被SQL缓存。
想不想时已是想,不如不想都不想。- 已建议为答案 Molly Chen_Moderator 2011年10月27日 15:38
- 已标记为答案 Molly Chen_Moderator 2011年10月28日 10:25