sql优化:select 1和select 0进行优化

最近在写数据库时遇到这种写法,转载这篇博客作为笔记:https://blog.csdn.net/u013385925/article/details/78040294

当我们只关心数据表有多少记录行而不需要知道具体的字段值时,类似“select 1 from tblName”是一个很不错的SQL语句写法,它通常用于子查询。这样可以减少系统开销,提高运行效率,因为这样子写的SQL语句,数据库引擎就不会去检索数据表里一条条具体的记录和每条记录里一个个具体的字段值并将它们放到内存里,而是根据查询到有多少行存在就输出多少个“1”,每个“1”代表有1行记录,同时选用数字1还因为它所占用的内存空间最小,当然用数字0的效果也一样。在不需要知道具体的记录值是什么的情况下这种写法无疑更加可取。

下面举例示范这种写法的常见用法:

1)列出每个班的学生人数

常规写法

1
2
select  class, count  (*)  as  pax  from  students 
group  by  class;

更优写法

1
2
select  class, count  (1)  as  pax  from  students 
group  by  class;

2)列出每个班最年轻的学生资料

常规写法

1
2
3
select  a.*  from  students a  where  not  exists(
select  b.sid  from  students b  where  b.sid=a.sid 
and  b.date_birth>a.date_birth);

更优写法

1
2
3
select  a.*  from  students a  where  not  exists(
select  from  students b  where  b.sid=a.sid 
and  b.date_birth>a.date_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值