当前位置:  数据库>mysql

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

    来源: 互联网  发布时间:2014-10-07

    本文导语:  一般采用二级索引去count:比如:id 是pk aid是secondary index 采用 代码如下:select count(*) from table where id >=0;或select count(*) from table;效果是一样的,都是默认使用pk索引,且都要全表扫描,虽然第一种性能可能高一些,但是没有明显区别...

一般采用二级索引去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则主要在扫描索引,同时要返回结果记录时的作用较大。


    
 
 

您可能感兴趣的文章:

  • mysql 提示INNODB错误的解决方法
  • MySQL InnoDB和MyISAM数据引擎的差别分析
  • MySQL存储引擎MyISAM与InnoDB的9点区别
  • Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题
  • MySQL数据库MyISAM存储引擎转为Innodb的方法
  • 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较
  • mysql 有关“InnoDB Error ib_logfile0 of different size”错误
  • MYSQL无法启动提示: Default storage engine (InnoDB) is not available的解决方法
  • MySQL存储引擎简介及MyISAM和InnoDB的区别
  • mysql之innodb的锁分类介绍
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法
  • MySQL禁用InnoDB引擎的方法
  • MySQL存储引擎 InnoDB与MyISAM的区别
  • 可以改善mysql性能的InnoDB配置参数
  • mysql中engine=innodb和engine=myisam的区别介绍
  • 关于mysql innodb count(*)速度慢的解决办法
  • MySQL不支持InnoDB的解决方法
  • MySQL数据库INNODB表损坏修复处理过程分享
  • Mysql5.5 InnoDB存储引擎配置和优化
  • MySQL数据库修复方法(MyISAM/InnoDB)
  • c++中关于#include <mysql/mysql.h>的问题?
  • linux 下mysql 以root和普通用户进入mysql的问题
  • 我的是mandrake8.2,已经安装了mysql,请教一个菜鸟问题,怎么操作才能进入mysql,然后建库!
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • radius mysql问题 rlm_sql_mysql.so 这个文件我怎么都没有找到
  • mysql安装问题菜鸟问题
  • Apache 1.3.22/Tomcat 4.0.4/Mysql 3.23/mm.mysql.jdbc-2.0pre5的中文乱码问题
  • apache+tomcat3.2.3+mm.mysql+mysql3.22+jdk1.3.1中文问题,急!!!!分不够还可以再加..
  • java 和 mysql的问题?初级问题!
  • mysql4.0升级到mysql5(4.1),解决字符集问题
  • MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 测试php连接mysql是否成功的代码分享
  • 解决MySQL Workbench gnome-keyring-daemon错误的方法分享
  • mysql字符集和数据库引擎修改方法分享
  • 还原大备份mysql文件失败的解决方法分享
  • 彻底卸载MySQL的方法分享
  • centos中mysql备份数据库脚本分享
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • 强制修改mysql的root密码的六种方法分享(mysql忘记密码)
  • mysql 表维护与改造代码分享
  • mysql筛选GROUP BY多个字段组合时的用法分享
  • 磁盘已满造成的mysql启动失败问题分享
  • 貌似很强的mysql备份策略分享
  • 我的是mandrake8.2,已经安装了mysql,请教一个菜鸟问题,怎么操作才能进入mysql,然后建库! iis7站长之家
  • aspx中的mysql操作类sqldatasource使用示例分享
  • xampp中修改mysql默认空密码(root密码)的方法分享
  • mysql数据库备份命令分享(mysql压缩数据库备份)
  • mysql中合并两个字段的方法分享
  • 分享MYSQL插入数据时忽略重复数据的方法
  • 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
  • mysql limit分页优化方法分享
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3