(1.10)经常使用SQL优化mysql
insert优化、order by 优化sql
一、insert 优化shell
二、order by 优化数据库
【2.1】mysql排序方式:bash
(1)索引扫描排序:经过有序索引扫描直接返回有序数据session
(2)filesort排序:全部不是索引扫描返回结果的数据均为filesort排序工具
filesort优化:性能
三、优化group by 测试
四、子查询优化优化
在!= 操做的子查询中,能够用left join + is null 来优化
五、or优化
or 在同字段下能够改为 in
在不一样字段下可使用Union all
六、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:管理、备份、监控、分析、优化工具(比较费资源)——引用自做者 惨绿少年