菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
335
0

mysql优化

原创
05/13 14:22
阅读数 88890

1)开启mysql慢查询日志

使用 show variables like "%slow%"; 命令来查看mysql慢查询配置信息

(其中)log_slow_queries : 慢查询日志开关

(其中)slow_launch_time:慢查询时间设置(以秒为单位),超过这个时间的查询语句为慢查询语句,会自动记录到慢查询日志里

 

修改配置方法一(临时,重启mysqld后自动恢复):

set global log_slow_queries=ON;

set global slow_launch_time=10;

 

修改配置方法二(永久):

修改 /etc/my.cnf 配置文件,加入下面两句配置参数

log-slow-queries = /tmp/mysql-slow.log
long_query_time = 2

 

2)索引优化建议

使用 "desc sql语句" 命令来分析出当前的sql语句的性能

type:查询的类型

possoble_keys:可能使用的索引

key:使用的索引

ref:建议

 

3)使用索引

1、给条件字段(where、order by、group having等)加索引;

2、如果字段类型为varchar类型,必须使用单引号或双引号包裹(错误:where user_name=123,正确:where user_name ="123"),否则索引无效;

3、如果where使用like模糊查询,前面不能放%(错误:where user_name like "%三%",正确:where title like "张%"),否则索引无效;

4、条件使用and或or时,这两个(或多个)条件字段都必须有索引(例如:select * from users where user_name="张三" and user_sex=1),否则整条查询语句索引无效。

 5、尽量不要使用子查询,嵌套了子查询的sql语句,只有子查询能用到索引,效率较低!!可以使用复合查询或连接查询替代

 

4)查看数据表是否有错误

check table tbl_name;

 

5)数据表优化(碎片整理)

optimize table tbl_name;

 

6)优化查询语句

1、insert .... values ....(...),(...),(...)  一次性插入多个数据可以减少mysql的连接和关闭的资源损耗;

2、group by 默认是升序排序的,加上order by null可以禁止排序,在对大量数据进行分组聚合时,可以提高一定的效率

 

7)分区、分表、使用视图

发表评论

0/200
335 点赞
0 评论
收藏