SQL优化的几个小问题

[复制链接]
查看11 | 回复2 | 2010-12-19 01:01:10 | 显示全部楼层 |阅读模式
1.
select count(*) from tt
select count(id) from tt
哪个更快呢?我怀疑,是不是第一种快些,因为第二种它还要去找哪些id字段是空的,而不算入其内?
2.drop table test
create table test
(
id int identity(1,1),
name varchar(20)
)
如果现在表中有120000条数据
select top 1 * from test order by id desc
select max(id) from test
这两句话哪个会快些呢?max是不是会一个一个将表中的每一个id去比哪个大?
而第一种方法是倒序直接取第一条值会很快?

回复

使用道具 举报

千问 | 2010-12-19 01:01:10 | 显示全部楼层
第一个,2个一样快。因为主要在磁盘IO ,oracle都是按块读取的,所以是一样的第二个应当是第一快些,第二个用了MAX函数,似乎是不走索引了。要是SQL SERVER的数据库,应当也差不多的解释
回复

使用道具 举报

千问 | 2010-12-19 01:01:10 | 显示全部楼层
我一直是用count(id)当数据多时我也是用 top1 这样的,具体max的没试过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行