equal最好了,其次in,最后是range

!=  <>  这类非操作尽量不用,它会转换为range。
>都是范围查询

复合索引有左匹配原则,(clo_a,clo_b)相当建立了两个索引
(clo_a,clo_b)
clo_a,

加索引前,最好在相同数据量的测试环境下,测试。 最好用线上的,怕造的数据有数据倾斜,造成数据选择性不高。

有分隔符的复杂索引,可以考虑前辍索引或复合索引

数据库增加索引操作

虽然,mysql声称5.7版本后,支持在线ddl且不锁表,但是,执行效率,还是没有pt-online-schema-change工具快

pt-online-schema-change工具不会有任何锁表的情况,因为,它的原理是新复制一张临时表,表结构和旧表一样,然后添加索引,把数据迁移到新临时表中,并且,还有3个触发器分别记录dml操作。最后,数据复制完成,2张表rename互换即可

使用online DDL模式,最稳妥,但需要安装online工具,得有权限。否则只能用普通DDL模式蛋疼的操作了

执行时间和数据量成正比,只不过是锁的时间会比较短,获取DML锁就可以了 后续还有一个锁的时间和增量数据有关

备注:

只读库如果只是高并发的读操作,产生的是共享乐观锁,一般情况下,只读库很少出现死锁。如果出现象上次那种大批量的慢查询sql,客户端发起读请求,服务端未能及时返回数据,导致客户端一直连续发送请求时,可能会出现阻塞等待。

mysql SQL优化琐记之索引的更多相关文章

  1. [MySQL性能优化系列]巧用索引

    1. 普通青年的索引使用方式 假设我们有一个用户表 tb_user,内容如下: name age sex jack 22 男 rose 21 女 tom 20 男 ... ... ... 执行SQL语 ...

  2. mysql sql优化实例

    mysql sql优化实例 优化前: pt-query-degist分析结果: # Query 3: 0.00 QPS, 0.00x concurrency, ID 0xDC6E62FA021C85B ...

  3. SQL优化(三)—— 索引、explain分析

    SQL优化(三)—— 索引.explain分析   一.什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据 ...

  4. Mysql SQL 优化

    1. 查询缓存 多数MySQL服务器都开启了查询缓存,相同的查询被执行多次,查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. // 查询缓存不开启 $r = mys ...

  5. MySQL SQL优化

    一.优化数据库的一般步骤: (A) 通过 show status 命令了解各种SQL的执行频率. (B) 定位执行效率较低的SQL语句,方法两种: 事后查询定位:慢查询日志:--log-slow-qu ...

  6. MySQL SQL优化之in与range查询【转】

    本文来自:http://myrock.github.io/ 首先我们来说下in()这种方式的查询.在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效 ...

  7. Mysql SQL优化&执行计划

    SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...

  8. SQL优化笔记一:索引和explain

    目录 为什么需要优化SQL SQL优化的重点 索引 索引的结构 索引的优缺点总结: 索引的分类 索引操作 B树 实战 问题 数据库方面,我会使用MySQL来讲解 为什么需要优化SQL 性能低,执行时间 ...

  9. 18.Mysql SQL优化

    18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态 ...

随机推荐

  1. VNC连接桌面

    1.#yum -y install vnc *vnc-server* 2.修改VNCServer主配置文件 #vim /etc/sysconfig/vncservers 复制最后两行并去掉行首注释符, ...

  2. 十五、CI框架之自动加载数据库

    一.在config的autoload.php文件中,如果写入以下代码,那么在控制器中无需再次加载数据库了,相当于全局自动加载数据库了 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码 ...

  3. 文献及代码阅读报告 - SS-LSTM:A Hierarchical LSTM Model for Pedestrian Trajectory Prediction

    概览 简述 SS-LSTM全称Social-Scene-LSTM,是一种分层的LSTM模型,在已有的考虑相邻路人之间影响的Social-LSTM模型之上额外增加考虑了行人背景的因素.SS-LSTM架构 ...

  4. maven的理解和使用

    一.maven是什么? maven是项目管理工具 二.maven为什么要用? 在做开发的时候常常会用到外部的工具包(jar包),这就需要你一个一个的去他们的官网下工具包,然后在项目里依赖他们,比较的麻 ...

  5. 在mysql中计算百分比

    通过查找资料,得到了如下解决方法: 用到了concat()和left() 两个函数 1.CONCAT(str1,str2,...) 返回来自于参数连结的字符串.如果任何参数是NULL, 返回NULL. ...

  6. css笔记01

    CSS样式(Cascading Style Sheets) 表格布局缺陷: ​ 嵌套太多,一旦顺序错乱页面达不到预期效果 ​ 表格布局页面不灵活,动一块整个布局全都要变 语法: ​ 在style标签中 ...

  7. mysql 时区问题导致的时间相差14小时

    1.mysql 字段名称 类型 begin_time TIME begin_time=08:18:39 2.java数据库连接串 jdbc:mysql://x.x.x.x:3306/y?useUnic ...

  8. 学习spring的第二天

    对昨天的查漏:关于<bean>标签的scope属性,是由它决定原型和单例的,而不是说你java代码中用到了单例模式就是单例了. 其二就是lazy-init属性,它对于scope=" ...

  9. POJ 1129:Channel Allocation 四色定理+暴力搜索

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13357   Accepted: 68 ...

  10. 给vector对象添加元素的方法

    #include<iostream> #include<vector> using namespace std; int main() { //初始化10个元素,每个值都为0 ...