问题:

create table A ( 
   id varchar(64) primary key, 
   ver int, 
   ... 
)

我的表有几个很长的字段varchar(3000) 
在id、ver上有联合索引

10000条数据 
  
为什么select id from A order by id特别慢,
而select id from A order by id,ver非常快 ?

解析:

1.两条sql都使用了索引覆盖。

2.myisam存储引擎,数据行和索引节点分开存放,所以不会存在上述问题。

3.innodb存储引擎,由于数据行和主键索引节点一起存放(聚簇索引),主键索引文件会比较大,

 当只按id排序读取id时,则会遍历主键索引B-TREE去读取id,由于表中的记录行有几个大字段的数据,读取时I/O跳跃会比较大,所以会特别慢;

 而根据符合索引(id,ver)排序查询时,则使用innodb的辅助索引,索引节点只存储了索引数据和主键的地址,而且使用了索引覆盖,只需从索引中读取id即可,所以会非常快。

mysql索引覆盖之innodb和myisam效率问题的更多相关文章

  1. [转帖]mysql常用存储引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介绍与如何选择

    mysql常用存储引擎(InnoDB.MyISAM.MEMORY.MERGE.ARCHIVE)介绍与如何选择原创web洋仔 发布于2018-06-28 15:58:34 阅读数 1063 收藏展开 h ...

  2. MySQL存储引擎【InnoDB、MyISAM、Memory】

    数据库,MySQL这样存在多存储引擎的数据库软件,清楚常见的存储引擎的区别,使用合适的存储引擎,使得项目跑的更顺畅,有时候对于一个项目,甚至比项目本身都重要.这篇文章,旨在浅谈常见的三种存储引擎的区别 ...

  3. MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试

    InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...

  4. MySQL索引覆盖

    什么是“索引覆盖”? 简单来的说,就是让查询的字段(包括where子句中的字段),都是索引字段.索引覆盖的好处是什么?好处是极大的.极大的.极大的提高查询的效率!重要的说三遍! 特别说明: 1.whe ...

  5. Mysql 存储引擎中InnoDB与MyISAM差别(网络整理)

    1. 事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的运行速度更快,性能更好. 2,select ,update ,insert ,delete 操作 MyISAM:假设 ...

  6. Mysql 存储引擎中InnoDB与Myisam的主要区别

    一直以为我spring事物没有配置好,结果发现是mysql的表本身设置成了Myisam 引擎.改成innodb就支持事物了. 1, 事务处理 innodb 支持事务功能,myisam 不支持. Myi ...

  7. 【转】Mysql 存储引擎中InnoDB与Myisam的主要区别

    1, 事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好.   2,select ,update ,insert ,delete 操作   MyISA ...

  8. mysql存储引擎中InnoDB与Myisam的区别及应用场景

    1. 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理): (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁: (3)sel ...

  9. Mysql存储引擎中InnoDB与Myisam的区别

    1. 事务处理innodb 支持事务功能,myisam 不支持.Myisam 的执行速度更快,性能更好. 2. select ,update ,insert ,delete 操作MyISAM:如果执行 ...

随机推荐

  1. Python中print格式化输出

    截取字符串输出,下面例子将只输出字符串的前3个字母 >>> str="abcdefg" >>> print "%.3s" % ...

  2. js document.activeElement及使用

    // 解决键盘弹出后挡表单的问题 // 解决键盘弹出后挡表单的问题 window.addEventListener('resize', function() { if( document.active ...

  3. GBT算法在拖动滑块辨别人还是机器中的应用

    1.数据源格式:(x,y,t),第一个值x是x坐标范围是1-250的整数,y是1-10的整数,t是滑块从上一个坐标到下一个坐标的时间差,ok是判断是人操作的,Fail是判断是机器操作的,数据看的出,同 ...

  4. Node.js版本管理工具 nvm

    1. 下载安装 curl curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash wge ...

  5. MongoDB 之 幽灵操作避免

    进行静态加载数据到集合的过程中可能会出现. 假设建立一个任务(Job):在MongoDB中进行千条更新操作,开始后迅速终止任务,终止所有更新操作,但依然发现新的更新任务在不断出现,即使任务已经停止. ...

  6. 谁应该在CCB(变更控制委员会)中?

    In software development, a Change Control Board (CCB) or Software Change Control Board (SCCB) is a c ...

  7. Bootstrap——导航居中

    这是采用了栅格,设置缩进,使看起来居中,但是手机浏览会靠到最左边.另外center-block类好像也不管用. <div class="row"> <ul cla ...

  8. Innodb表压缩过程中遇到的坑(innodb_file_format)

    https://www.cnblogs.com/billyxp/p/3342969.html

  9. HttpClientUtil请求http地址的工具类

    直接贴代码: import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache ...

  10. Linux最大打开文件描述符数

    1.    系统最大打开文件描述符数:/proc/sys/fs/file-max a.    查看 $ cat /proc/sys/fs/file-max 186405 2. 设置 a.    临时性 ...