myisam存储:如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎,比如bbs 中的发帖表,回复表
需要定时进行碎片整理(因为删除的数据还是存在):optimize table table_name;
MySQL中SQL优化、索引优化、锁机制、主从复制的方法
InnoDB存储:对事务要求高,保存的数据都是重要数据,我们建议使用INN0DB,比如订单表,账号表.
1 SQL性能分析
SQL性能下降原因:
1、查询语句写的烂
2、索引失效(数据变更)
3、关联查询太多join(设计缺陷或不得已的需求)
4、服务器调优及各个参数设置(缓冲、线程数等)
通常SQL调优过程:
观察,至少跑1天,看看生产的慢SQL情况。
开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来。
explain + 慢SQL分析。
show profile。
运维经理 or DBA,进行SQL数据库服务器的参数调优。
总结:
1、慢查询的开启并捕获
2、explain + 慢SQL分析
3、show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况
4、SQL数据库服务器的参数调优
2 常见通用的JOIN查询
SQL执行加载顺序
手写顺序:
SELECT DISTINCT
<select_list>FROM
<left_table> <join_type>JOIN <right_table> on <join_codition> //join_codition:比如员工的部门ID和部门表的主键id相同WHERE
<where_condition>GROUP BY
<group_by_list>HAVING
<having_condition>ORDER BY
<order_by_condition>LIMIT
<limit_number>
MySQL机读顺序:
1 FROM <left_table>
2 ON <join_condition>
3 <join_type> JOIN <right_table>
4 WHERE <where_condition>
5 GROUP BY <group_by_list>
6 HAVING <having_condition>
7 SELECT
8 DISTINCT <select_list>
9 ORDER BY <order_by_condition>
10 LIMIT <limit_number>
大型站长资讯类网站! https://www.nzzz.com.cn