------原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 毫秒。
*/
union – OR 改写减少对表的扫描次数。
sqlserver UNION-OR 改写一例
最新推荐文章于 2023-07-13 11:12:03 发布