百分求助基础问题

hunhun02 2006-12-29 02:16:00
两个问题,都弄清楚了就结帐啊,

一个是select count(*) from 表
和 select count(1) from 表
的区别是什么,在算法上那个更好一些,

另一个是怎样建立一个临时表,并且向里边传入数据,在查询出来

...全文
219 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
拓狼 2006-12-29
  • 打赏
  • 举报
回复
再快也快不过下面的语句,哈哈:

select object_name(id) as 表名,rowcnt as 总行数 from sysindexes where indid<2
and object_name(id)='表名'
hunhun02 2006-12-29
  • 打赏
  • 举报
回复
多谢指点
jacobsan 2006-12-29
  • 打赏
  • 举报
回复
--测试环境,插入100万行随机数据
select top 1000000 identity(int,1,1) as id,left(newid(),6) as name,left(newid(),6) as name2,left(newid(),6) as name3 into #t from sysobjects a,sysobjects b,sysobjects c

--测试
select count(*) from #t
--
2203ms



select count(1) from #t
--
2296ms


--删除临时表
drop table #t

--事实说话,两者几乎是一样的,100万数据不够还可以加
排除及其硬件环境的波动两者的效率是一样的

hunhun02 2006-12-29
  • 打赏
  • 举报
回复
还是不明白
帮助里只是说返回组中的项数,没有更详细的解释
baggio328 2006-12-29
  • 打赏
  • 举报
回复
两个问题,都弄清楚了就结帐啊,

一个是select count(*) from 表
和 select count(1) from 表
的区别是什么,在算法上那个更好一些,

执行的消耗是一样的,放心使用即可
=====================================

另一个是怎样建立一个临时表,并且向里边传入数据,在查询出来
上面的提到了两种方法
建议使用
select .....
into #temp
from .....
这样不用创建表,尤其是字段相对比较多的时候,效率还是很可观的
shirely 2006-12-29
  • 打赏
  • 举报
回复
1.应该是一样的吧~~
2.create view t ....
bulk insert ......
setupcopy 2006-12-29
  • 打赏
  • 举报
回复
create table #tablename
()

select * into #tablename from tablename

insert into #tablename values()

select * from #tablename

drop table #tablename
jacobsan 2006-12-29
  • 打赏
  • 举报
回复
count()函数不返回具体数据的,所以列数多少对它没有影响
hunhun02 2006-12-29
  • 打赏
  • 举报
回复
不是很确认,能具体一点的解释一下原理吗?
jacobsan 2006-12-29
  • 打赏
  • 举报
回复
我知道小规模的数据运算都差不多,但是如果大规模的数据库还是有差别的,希望高手能指出来期间的区别,什么时候用那个合适
据说大部分时候count(1)更好一些,但是不是全部都是如此,有时候count(*)也有有优势的一面,我想知道期间的差别,什么时候用那个合适

----
两者的执行计划是完全相同的,执行效率也一样,不存在数据量大小的区别
hunhun02 2006-12-29
  • 打赏
  • 举报
回复
我知道小规模的数据运算都差不多,但是如果大规模的数据库还是有差别的,希望高手能指出来期间的区别,什么时候用那个合适
据说大部分时候count(1)更好一些,但是不是全部都是如此,有时候count(*)也有有优势的一面,我想知道期间的差别,什么时候用那个合适
marco08 2006-12-29
  • 打赏
  • 举报
回复
select count(*) from 表
select count(1) from 表

--應該是一樣的
jacobsan 2006-12-29
  • 打赏
  • 举报
回复
另一个是怎样建立一个临时表,并且向里边传入数据,在查询出来

---
天道的方法可以
或者
create #t(.....)
insert into #t select .....

select * from #t
jacobsan 2006-12-29
  • 打赏
  • 举报
回复
一个是select count(*) from 表
和 select count(1) from 表


----
测试结果表明,两个几乎是一样的
marco08 2006-12-29
  • 打赏
  • 举报
回复

另一个是怎样建立一个临时表,并且向里边传入数据,在查询出来

--
select * into #T from tbName

select * from #T

drop table #T

34,589

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧