您的位置:首页 > 数据库 > MySQL

mysql优化

2016-03-15 21:00 609 查看
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)分区、分表、使用视图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: