• 技术文章 >数据库 >mysql教程

    关于mysql中innodb的count优化问题分享

    2016-06-07 17:55:32原创488

    关于mysql中innodb的count优化问题,有需要的朋友可以参考下

    一般采用二级索引去count:
    比如:id 是pk aid是secondary index

    采用
    代码如下:
    select count(*) from table where id >=0;

    select count(*) from table;

    效果是一样的,都是默认使用pk索引,且都要全表扫描,虽然第一种性能可能高一些,但是没有明显区别。

    但是如果用secondary index
    代码如下:
    select count(*) from table where aid>=0;

    则会快很多。

    为什么用 secondary index 扫描反而比 primary key 扫描来的要快呢?这就需要了解innodb的 clustered index 和 secondary index 之间的区别了。

    innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。
    因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。
    而primary key则主要在扫描索引,同时要返回结果记录时的作用较大。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:innodb count优化
    上一篇:apache中访问不了伪静态页面的解决方法 下一篇:内网ssh/mysql登录缓慢的解决方法
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• MySQL的几种碎片整理方案• 一文掌握Mysql中的Enum数据类型• mysql查询慢的因素除了索引,还有什么?• MySQL读写分离基本原理详解• 浅析mysql设置最大连接数的两种方法
    1/1

    PHP中文网