(1.10)常用SQL优化

insert优化、order by 优化

1、insert 优化

  

2、order by 优化

【2.1】mysql排序方式:

  (1)索引扫描排序:通过有序索引扫描直接返回有序数据

  (2)filesort排序:所有不是索引扫描返回结果的数据均为filesort排序

  filesort优化:

    

3、优化group by

  

  

  

  

4、子查询优化

  在!= 操作的子查询中,可以用left join + is null 来优化

5、or优化

  or 在同字段下可以改成 in

  在不同字段下可以使用Union all

6、limit优化

【6.1】子查询优化/join(id为索引字段)

       这种方式先定位偏移位置的 id,然后往后查询,这种方式适用于 id 递增的情况。

    

SELECT * FROM product
WHERE ID > =(select id from product limit 866613, 1) limit 20
     或者
SELECT * FROM product a
JOIN (select id from product limit 866613, 20) b ON a.ID = b.id

【6.2】ID限定优化

      

使用 id 限定优化

  这种方式假设数据表的id是连续递增的,则我们根据查询的页数和查询的记录数可以算出查询的id的范围,

  可以使用 id between and 来查询:


select * from orders_history where type=2
and id between 1000000 and 1000100 limit 100; 也可以
    
select * from orders_history where id >= 1000001 order by id asc limit 100;

 

优化工具之数据库层面


检查问题常用的 12 个工具:
MySQL
mysqladmin:MySQL 客户端,可进行管理操作
mysqlshow:功能强大的查看 shell 命令
SHOW [SESSION | GLOBAL] variables:查看数据库参数信息
SHOW [SESSION | GLOBAL] STATUS:查看数据库的状态信息
information_schema:获取元数据的方法
SHOW ENGINE INNODB STATUS:Innodb 引擎的所有状态
SHOW PROCESSLIST:查看当前所有连接的 session 状态
explain:获取查询语句的执行计划
show index:查看表的索引信息
slow-log:记录慢查询语句
mysqldumpslow:分析 slowlog 文件的工具


不常用但好用的 7 个工具:
Zabbix:监控主机、系统、数据库(部署 Zabbix 监控平台)
pt-query-digest:分析慢日志
MySQL slap:分析慢日志
sysbench:压力测试工具
MySQL profiling:统计数据库整体状态工具
Performance Schema:MySQL 性能状态统计的数据
workbench:管理、备份、监控、分析、优化工具(比较费资源)——引用自作者 惨绿少年

												

(1.10)SQL优化——mysql 常见SQL优化的更多相关文章

  1. MySQL · 性能优化 · MySQL常见SQL错误用法(转自-阿里云云栖社区)

    作者:阿里云云栖社区链接:https://zhuanlan.zhihu.com/p/26043916来源:知乎著作权归作者所有,转载请联系作者获得授权. 前言 MySQL在2016年仍然保持强劲的数据 ...

  2. MySQL · 性能优化 · MySQL常见SQL错误用法

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样 ...

  3. MySQL - 性能优化 & MySQL常见SQL错误用法(转载)

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如: , ; 一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样条件排序 ...

  4. (1.9)SQL优化——mysql导入导出优化

    (1.9)SQL优化——mysql导入导出优化 1.大批量插入数据 [1.1]MyISAM: (1)如果存在表且有数据,插入前先关闭所有非唯一索引. (2)如果表是空的,默认就是先导入数据再创建索引, ...

  5. sql点滴41—mysql常见sql语法

    原文:sql点滴41-mysql常见sql语法 ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename ...

  6. mysql常见的优化需要注意的点

    1.explain分析explian引用索引基数show indexes from table_name;主键索引具有最好的基数 测试时 不走缓存SELECT SQL_NO_CACHE id from ...

  7. 【MySQL性能优化】MySQL常见SQL错误用法

    https://yq.aliyun.com/articles/72501?utm_content=m_14899

  8. MYSQL常见可优化场景

    1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 可以在num上设置 ...

  9. MySQL常见SQL语句用法

    标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 表字段类型 TINYINT 微小整数类型,可存储的容量为1字节 INT 整数类型 ...

随机推荐

  1. 阿里云中ssl配置(nginx安装https服务)

    1.配置 a.阿里云服务器 b.安装了nginx,php等 2.申请免费ssl证数 a. b. c.产看ssl证数 d.下载证数 e,这里我下载的是nginx(crt与key文件) f.服务器上配置 ...

  2. 【转】在xcode5中修改整个项目名

    本文转载自:http://www.cnblogs.com/tbfirstone/p/3601541.html 总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode ...

  3. Fiddler 安装与配置

    可以直接访问官网下载安装包 https://www.telerik.com/download/fiddler ,安装后需要配置浏览器的代理服务器为 Fiddler: 以谷歌浏览器为例:[设置]---[ ...

  4. 一、K3 Cloud 实施指导《K3 Cloud实施手册》

    1.在BOS的单据体取不到序号字段 举例:单据体标识是FValueGrid,序号标识是FSeq,取到的序号标识要写成FValueGrid_FSeq才能识别到 2.k3 Cloud目前不支持在表头字段调 ...

  5. 修改testtools框架,将测试结果显示用例注释名字

    在之前介绍的测试框架testtool中,发现测试结果中显示的都是测试用例的函数名,并没有将注释显示出来 这很不符合国人使用阿,没办法,自己动手来改改吧 首先,testtools是继承unittest的 ...

  6. 解决Maven build 慢的问题

    extends:http://www.cnblogs.com/gmq-sh/p/4742698.html ,http://www.cnblogs.com/rainy-shurun/p/5726758. ...

  7. MySQL-记一次备份失败的排查过程

                山竹来临,窝在家里整理个人文档.        本篇文章主要讲解排查问题的思路,涉及linux 删除文件的原理.实例误删数据恢复.MySQL实例初始化参数优先级别等,虽然涉及知 ...

  8. WPF 打开指定文件路径的文件资源管理器

    x 需求是想让WPF打开一个指定文件路径的文件夹,但是搜出来的八成都是<打开文件>的这样的↓ Microsoft.Win32.OpenFileDialog open_file = new ...

  9. OPTIMIZE TABLE linked list 表优化原理 链表数据结构 空间再利用

    小结: 1.加快读写: 2.对于InnoDB表,在一定条件下,通过复制旧表重建: 3.实践中, 3.1.show processlist;查看线程,发现,认为堵塞读请求: 3.2.数据长度空间不变,索 ...

  10. phpstorm之ssh链接远程Linux服务器

    save ssh session inPHPstorm. open PHPstorm,open File,> Settings >search for 'Deployment' > ...