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

SQL Server 存储过程有关问题

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

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

热点排行
Bad Request.