问题:

create table A (
id varchar(64) primary key,
ver int,
...
)
在id,ver上有联合索引,10000条数据
为什么select id from A order by id特别慢?
而select id from A order by id,ver非常快
我的表有几个很长的字段 varbinary(3000)
推断:
1. 2句sql都用到了索引覆盖,如果myisam引擎2句sql应该都很快, 推断用的是innodb引擎
2. order by id ,innodb 引擎聚簇存储了每列的值,因为有几个很长的字段,1个块存不了很多行数据,导致块比较多,使用id主键时,要跨好多小文件块,导致效率不高。
3. order by id,ver. 使用的是二级索引,innodb引擎二级索引都是存的 聚簇索引的地址指向聚簇索引,因此不带数据,索引文件比较小轻便,内存中也能使用,所以速度快。
create table t7 (
id char(64) primary key,
var int not null default 0,
str1 varchar(3000) not null,
str2 varchar(3000) not null,
str3 varchar(3000) not null,
str4 varchar(3000) not null
key `idvar` (id,var)
)engine=myisam charset=utf8; create table t8 (
id char(64) primary key,
var int not null default 0,
str1 varchar(3000) not null,
str2 varchar(3000) not null,
str3 varchar(3000) not null,
str4 varchar(3000) not null
)engine=innodb charset=utf8;
alter table t7 add index idver(id,var) 结论: innodb 大字段(char)主键 造成大量分裂, 正好发挥的是innodb的劣势
如果没有这么长大字段的列 ,差距也不会很大
alter table t8 drop column st1;alter table t8 drop column st2;alter table t8 drop column st3;

mysql经典案例分析的更多相关文章

  1. 【MySQL经典案例分析】关于数据行溢出由浅至深的探讨

    本文由云+社区发表 一.从常见的报错说起 ​ 故事的开头我们先来看一个常见的sql报错信息: ​ 相信对于这类报错大家一定遇到过很多次了,特别对于OMG这种已内容生产为主要工作核心的BG,在内容线的存 ...

  2. 【MySQL经典案例分析】 Waiting for table metadata lock

    本文由云+社区发表 一. 问题是这样来的 ​ 2018年某个周末,接到连续数据库的告警,告警信息如下: 二. 苦逼的探索过程 1.总体的思路 看到too many connection的报错信息,基本 ...

  3. 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】

    阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...

  4. MySQL死锁案例分析与解决方案

    MySQL死锁案例分析与解决方案 现象: 数据库查询: SQL语句分析:  mysql. 并发delete同一行记录,偶发死锁.   delete from x_table where id=?   ...

  5. 猴子吃桃问题之《C语言经典案例分析》

    猴子吃桃问题之<C语言经典案例分析>一.[什么是猴子吃桃]       猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半 ...

  6. Mysql 经典案例总结(学习之前需要有Mysql基础)01

    Sql 经典案例 gb 4.2 ** 1 检索记录 (1) 主要介绍 Sql的基本SELECT查询语句 使用 SELECT * from 表 查询数据 查询该表的每一列数据 * 代表所有的意思 也可以 ...

  7. Mysql之案例分析(一)

    可见性分析 CREATE TABLE `t` ( `id` int(11) NOT NULL, `k` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGIN ...

  8. mysql优化案例分析

    本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助.sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读:另一类是sql本身没有 ...

  9. mysql 经典案例

    MySQL多表联合查询是MySQL数据库的一种查询方式,下面就为您介绍MySQL多表联合查询的语法,供您参考学习之用. MySQL多表联合查询语法: SELECT * FROM 插入表 LEFT JO ...

随机推荐

  1. Android ffmpeg rtmp(source code)

    souce code: Android.mk 编译生成APK需要调用的so文件 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODU ...

  2. python3中reduce()函数的使用方法示例

      reduce() 函数会对参数序列中元素进行累积,下面这篇文章主要给大家介绍了关于python中reduce()函数的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学 ...

  3. 为solr增加用户验证

    添加此功能主要是为了增加solr服务器的安全性,不能随便让人访问. 1.      在tomcat的F:\Tomcat 6.0.26_solr\conf\tomcat-users.xml添加用户角色并 ...

  4. java中的URLConnection和HttpURLConnection有什么区别(因为我自己搜到别人写的区别看下来都没有什么区别)

    今天看了一下公司同事的代码,如下 URLConnection connection = openConnection(localURL); HttpURLConnection httpURLConne ...

  5. MySQL数据库储存引擎Inoodb一--记录储存结构

    在开文我先说明一下,接下来的数据库知识文章都是在微信公众号“我们都是小青蛙”学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库进行数据持 久化的时 ...

  6. [Python] numpy.nonzero

    numpy.nonzero(a) Return the indices of the elements that are non-zero. Returns a tuple of arrays, on ...

  7. python的分支循环

    知识内容: 1.if-else分支结构 2.while循环 3.for循环 4.循环结构综述 5.break和continue语句 一.if-else分支结构 1.单分支选择结构 if 表达式: 语句 ...

  8. jdk1,8 HashMap

    Java源码分析:HashMap 1.8 相对于1.7 到底更新了什么? 上面网站总结很详细  源码除了具体操作其余全罗列.这里就不总结了

  9. 微擎框架小程序 uitl

    获取用户信息 util.getUserInfo(callback) 获取成功后会将用户信息写入到缓存中,如果指定了回调函数,则会调用回调函数 callback 获取成功后的回调函数 示例 var ap ...

  10. spring 的 切片Aspect

    语法:  <aop:config> <!-- 配置多个切点,&& || ! --> <aop:pointcut id="pc" exp ...