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. Java enum应用小结

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  2. mysql 锁表的处理方式

    MySQL错误:ERROR 1205 (HY000): Lock wait timeout   处理方案:   执行mysql命令:show full processlist;   然后找出插入语句的 ...

  3. iOS下JS与原生的交互二

    本篇主要讲的是UIWebView和JS的交互,UIWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/6429431.html 一. WKWebView调用J ...

  4. Python获取桌面路径

    第一种: import winreg def get_desktop(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Micr ...

  5. 使用js检测页面是在electron app中运行还是在浏览器中运行

    <script type="text/javascript"> var userAgent = navigator.userAgent.toLowerCase() ){ ...

  6. 使用文件流创建File文件和目录以及其他的一些操作

    我们创建文件时可以直接通过File f=new File(path)来创建一个文件对象,然后再通过 f.createNewFile() 就创建出来了一个文件.比如设置 path 为 C:\Users\ ...

  7. Mysql--主库不停机搭建备库

    参考:http://blog.csdn.net/luozuolincool/article/details/38494817 mysqldump --skip-lock-tables --single ...

  8. HTTP协议(一):概述

    背景介绍 但凡世界上牛逼的人物,都会有一个非常离奇的经历.比如说乞丐出身的皇帝朱元璋,出生时家中红光大作,映红了半边天;再比如说无良皇帝刘邦,简直不要太牛逼,说自己是老妈和一条白龙交合生出的自己,而老 ...

  9. 18 12 29 css background

    background属性 属性解释 background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,background是一个复合属性,它可以分解成如下几个 ...

  10. idea 2019.3 最新破解补丁和激活码,可破解至2089年!

    链接:https://blog.csdn.net/qq_42914528/article/details/85617901 上面方法失效了,请尝试以下方式激活(2020.1.6更新) idea激活码( ...