sqlserver UNION-OR 改写一例

xiaoxiao2021-02-28  147

------原SQL info: select name=name,xtype=0,rowcnt=-1 from sysobjects with (nolock) where status>=0 and objectproperty(id,'ISUSERTABLE')=1 union select name,1,-1 from sysobjects with (nolock) where status>=0 and objectproperty(id,'ISVIEW')=1 order by xtype,name /* SQL Server 分析和编译时间: CPU 时间 = 31 毫秒,占用时间 = 1132 毫秒。 (406 行受影响) 表 'sysschobjs'。扫描计数 2,逻辑读取 78 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间: CPU 时间 = 16 毫秒,占用时间 = 28 毫秒。 */ --------SQL改写 select distinct name, case when objectproperty(id,'ISUSERTABLE')=1 then 0 else 1 end AS xtype, -1 AS rowcnt from sysobjects with (nolock) where status>=0 and (objectproperty(id,'ISUSERTABLE')=1 OR objectproperty(id,'ISVIEW')=1) order by xtype,name /* SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 (406 行受影响) 表 'sysschobjs'。扫描计数 1,逻辑读取 39 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 SQL Server 执行时间: CPU 时间 = 31 毫秒,占用时间 = 148 毫秒。 */ unionOR 改写减少对表的扫描次数。
转载请注明原文地址: https://www.6miu.com/read-19466.html

最新回复(0)