mysql sql 1到10_(1.10)SQL优化——mysql 常见SQL优化

(1.10)常用SQL优化

insert优化、order by 优化

1、insert 优化

3bf15ad9d3082724cd1647c64b7b747a.png

2、order by 优化

【2.1】mysql排序方式:

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

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

filesort优化:

5f470836a4f4f349c8f063c00f761bba.png

3、优化group by

c251b20102db4ac153a261caefa2a830.png

d5a7987b5c80c8f36e3a644ab5a2b065.png

4、子查询优化

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

5、or优化

or 在同字段下可以改成 in

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

6、limit优化

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

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

SELECT * FROMproductWHERE ID > =(select id from product limit 866613, 1) limit 20或者SELECT * FROMproduct aJOIN (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:管理、备份、监控、分析、优化工具(比较费资源)——引用自作者 惨绿少年

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值