p231~294. 分为2部分, p231~259, p260~p294. 此为第1部分.
一些语句
查询性能预估
select * from xxx;
show status like 'last_query_cost';
开启慢查询, 参考链接.
set global slow_query_log=ON;//开启慢查询
set long_query_time=1;//设置慢查询, 1表示比1秒长算慢查询
show status like 'slow_queries';//查询慢查询
常见引起慢查询的清空
请求了多余的数据
- 查询不需要的记录. 如
select * from table1
, 然后程序分页, 只取20条, 这样就浪费了. 可以加LIMT解决. - 多表关联取出所有列. 如
select * from table1 inner join table2 on table1.id = table2.t_id
. 可以只拿需要的列代替select *
- 重复查询相同的数据. 如多次查询相同的数据, 可以先缓存到应用程序端, 这样避免多次访问数据库.
额外扫描了多余的记录
3个指标衡量查询
- 响应时间
- 扫描的行数
- 返回的行数
关联查询时,