日期:2014-05-18  浏览次数:20372 次

SQL Server 存储过程问题!
SELECT COUNT(*),字段1 INTO ISEXISTS,字段2 FROM 表名 WHERE ……  

SELECT COUNT(1),字段1 INTO ISEXISTS,字段2 FROM 表名 WHERE ……  

是什么意思?两者的区别是什么?

------解决方案--------------------
楼主确定这样可以执行???
------解决方案--------------------
count(*)和count(1)表达的意义一样,在一些查询中可能存在微弱的效率上的差异。
------解决方案--------------------
count(*)和count(1)是一样的
------解决方案--------------------
效果一样。
COUNT(*)效率没COUNT(1)高,在字段特别多的情况下.
------解决方案--------------------
都是返回项数的集合,COUNT(1)和COUNT(*)区别在于前者比后者的执行效率高。
------解决方案--------------------
http://baike.baidu.com/view/3236256.htm
------解决方案--------------------
SQL code
count(*)和count(1)是一样的

------解决方案--------------------
SQL code
count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。

------解决方案--------------------
SQL code
count(*)与count(1)的对比
现在我们开始验证count(*)和count(1)的区别,验证方法很简单,如果两个语句执行效率不一样的话它们的查询计划肯定会不一样的,我们先执行set showplan_text on打开SQL执行计划显示,然后我们执行相应的SQL语句。

先是count(*):

select count(*) from test
 
/*---------------------------------------
  ====== 下面是执行计划 ======
  |--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1005],0)))
       |--Stream Aggregate(DEFINE:([Expr1005]=Count(*)))
            |--Table Scan(OBJECT:([AdventureWorks].[dbo].[test]))
 --------------------------------------*/接着count(1):

select count(1) from test
 
/*---------------------------------------
 ====== 下面是执行计划 ======
  |--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1005],0)))
       |--Stream Aggregate(DEFINE:([Expr1005]=Count(*)))
            |--Table Scan(OBJECT:([AdventureWorks].[dbo].[test]))
 --------------------------------------*/对比下两个执行计划我们可以发现是完全一样的,这也就说明count(*)和count(1)的执行效率是完全一样的,根本不存在所谓的单列扫描和多列扫描的问题。

------解决方案--------------------
sql语句正确的话,查询结果是一样的,但是经常用count(1),只要这两个效率的问题还得看情况,还得看什么数据库
参考
http://blog.163.com/bj_whj/blog/static/132129412011128113856421/
------解决方案--------------------
你这是ORACLE,具体是判断是否存在字段a和字段b相等的记录,如果存在删除掉new_table表。
------解决方案--------------------
探讨

select count(*) into coun from user_tables where 字段a=字段b