MSSQL优化“if exists性能”的方法分享


摘要:
下文讲述MSSQL数据库中,使用 top 1 查询方式优化If exists性能的方法分享,如下所示:
实验环境:sqlserver 2008 R2

 
/*
在日常的检测数据表是否存在数据时,我们会采用这种写法
这种写法有一个弊端,就是可能返回了很多行记录,和返回不必要的列
这种写法貌似会降低sql脚本的性能
*/
IF EXISTS( SELECT [列名] FROM [数据表名称] WHERE [检索条件] )  
BEGIN  
  /*sql 脚本*/
END  
 
 
/*
 如果我们使用top 1 检索一条数据,那么大大的减少了数据的返回量
  并且在列名处放入NULL,或一个常量,就可以做到不返回任何数据,
  只获取是否存在行数据
   笔者认为这种方式比前一种方式更高效,可以作为优化if exists查询的写法
*/
IF EXISTS( SELECT TOP 1 '' FROM dbo.[Table] WHERE xxx = xxxxxx )  
BEGIN  
 /*
  sql脚本
 */
END