mysql SQL优化琐记之索引
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优化琐记之索引的更多相关文章
- [MySQL性能优化系列]巧用索引
1. 普通青年的索引使用方式 假设我们有一个用户表 tb_user,内容如下: name age sex jack 22 男 rose 21 女 tom 20 男 ... ... ... 执行SQL语 ...
- mysql sql优化实例
mysql sql优化实例 优化前: pt-query-degist分析结果: # Query 3: 0.00 QPS, 0.00x concurrency, ID 0xDC6E62FA021C85B ...
- SQL优化(三)—— 索引、explain分析
SQL优化(三)—— 索引.explain分析 一.什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据 ...
- Mysql SQL 优化
1. 查询缓存 多数MySQL服务器都开启了查询缓存,相同的查询被执行多次,查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. // 查询缓存不开启 $r = mys ...
- MySQL SQL优化
一.优化数据库的一般步骤: (A) 通过 show status 命令了解各种SQL的执行频率. (B) 定位执行效率较低的SQL语句,方法两种: 事后查询定位:慢查询日志:--log-slow-qu ...
- MySQL SQL优化之in与range查询【转】
本文来自:http://myrock.github.io/ 首先我们来说下in()这种方式的查询.在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效 ...
- Mysql SQL优化&执行计划
SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...
- SQL优化笔记一:索引和explain
目录 为什么需要优化SQL SQL优化的重点 索引 索引的结构 索引的优缺点总结: 索引的分类 索引操作 B树 实战 问题 数据库方面,我会使用MySQL来讲解 为什么需要优化SQL 性能低,执行时间 ...
- 18.Mysql SQL优化
18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态 ...
随机推荐
- 基于Docker本地运行Kubernetes
基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 \1. 你必须拥有一台安装有D ...
- NOI2019退役记
Day0 时光荏苒,日月如梭.人生中第二次也是最后一次全国赛开始了. 坐6h高铁+1h大巴来到gzez,热死.室友是A类的Gloid和C类的仓鼠,我寝室是为数不多(或许只有1个)的凑齐了ABC三种类别 ...
- js正则 -180 到180 小数点后无限位
正则 -180 到180 小数点后无限位/^0$|^-?0\.\d*[1-9]$|^-?[1-9](\.\d*[1-9])?$|^-?[1-9]\d(\.\d*[1-9])?$|^-?1[0-7]\d ...
- 系统学习python第一天学习笔记
1.计算机认识 1.常见的操作系统 win xp win7 win10 window server(服务器) linux centos,图形化界面差 ubuntu , 个人开发(图形化比较好) red ...
- java笔记5
1. JUnit 单元测试:方法名任意,但是没有参数列表. 注解: @Test @Ignore @Before @After 2. 泛型 1. 在集合中使用泛型 2. 在通用性较高的代码中使用泛型 1 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...
- pandas中DataFrame重置设置索引
在pandas中,经常对数据进行处理 而导致数据索引顺序混乱,从而影响数据读取.插入等. 小笔总结了以下几种重置索引的方法: import pandas as pd import numpy as n ...
- vue 插槽 part3
f vue中的插槽 1.<slot>默认内容</slot> 当副组件不传递信息的时候 显示默认内容 2.<slot></slot> 显示的是插槽中所有的 ...
- 我的第一次JAVA实训——校园公用房管理系统
老铁们,昨天电脑没电了.这是上周答应的大项目. 别打脸. 详细内容我之后再写,下面是代码地址. Github地址 附:一个寂寞 以上
- Linux安装已编译好的FFmpeg,基于centos7
1.访问https://johnvansickle.com/ffmpeg/ 2.下载地址:https://johnvansickle.com/ffmpeg/releases/ffmpeg-releas ...