首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个简单的存储过程优化,多谢

2012-01-16 
一个简单的存储过程优化,谢谢!create PROCEDURE [dbo].[bExistDir](@MySubject varchar(64),@MyID int)ASB

一个简单的存储过程优化,谢谢!
create PROCEDURE [dbo].[bExistDir] 
(@MySubject varchar(64),
  @MyID int)
AS
BEGIN
  declare @var1 nvarchar(128)
  declare @iNum int;
  select @var1 = 'select @a = count(*) from '+@MySubject + 'Dir' + ' where parentid = ' + rtrim(@MyID)
  exec sp_executesql @var1,N'@a int output',@iNum output
  if @iNum = 0
  begin
  return 0
  end
  else
  begin
  return 1 
  end
end

因为 if exist 效率应该比 count(*)高,所以想更改一下,但是不知道该如何写,谢谢!

[解决办法]

SQL code
if exists (select 1 from @MySubject where parentid = rtrim(@MyID))return 1elsereturn 0
[解决办法]
SQL code
create PROCEDURE [dbo].[bExistDir] (@MySubject varchar(64),  @MyID int)ASBEGIN    DECLARE @t TABLE(ID int)    INSERT @T EXEC('if exists(select 1 from '+@MySubject + 'Dir' + ' where parentid = ' + @MyID+') select 1 ')    IF EXISTS(SELECT 1 FROM @t)      return 1    ELSE         return 0END 

热点排行