sort原理/select count原理

1.sort原理:

MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。

示例:

select city,name,age from t where city='杭州' order by name limit 1000 ;

 

执行流程:

1.初始化sort_buffer,确定需要存放city,name,age三个字段

2.通过city索引,插叙city=杭州的行,回表查出name,age字段值

3.将2中的三个字段值,放入到sort_buffer.

4.将sort_buffer中的数据按照name排序,并返回1000条

 

 

2.select count原理

MyIsam 把表的总行数记录到磁盘上了.因此执行会直接返回个数,很快.因为他不支持事务,不支持mvcc.但是innodb每个事务看到的数据条数都有可能不一样,因此不能存在磁盘上

innodb要查询每一行.因为可能每个事务看到的结果不一样

   count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。最后返回累计值。

  • count(字段):遍历整张表,需要取值,判断 字段 != null,按行累加;
  • count(id) :遍历整张表,需要取ID,判断 id !=null,按行累加;
  • count(1) : 遍历整张表,【不需要】取值,返回的每一行放一个数字1,按行累加;
  • count(*) : 【不需要取字段】,count(*),按行累加; (优化:MySQL 优化器会找到最小的那棵树来遍历。在保证逻辑正确的前提下,尽量减少扫描的数据量,是数据库系统设计的通用法则之一.

    因为count(*) 和 count(1) 不取字段值,减少往 server层的数据返回,所以比其他count(字段)要返回值的【性能】较好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值