mysql在开发中的优化技巧和慢查询日志的配置

在平时开发中,数据库的使用以及优化,也对我们所开发的系统或者平台的性能是一种考验,如何既能够满足需求又能提高sql的性能,值得我们学习,今天就把自己平常遇到的让大家了解一下。

1 当已知where条件的时候,避免在where子句中对子段进行函数操作,如果你的条件是添加了索引,这时搜索引擎会放弃索引而进行去全表扫描,会降低执行效率。

例如:

select * fron user where substring(name,1,4)='abcd' 姓名以abcd开头的人员信息//不建议使用,会 进行全表扫描,放弃name这个索引

select * from user where name like 'abcd%'//建议使用

2 应当尽量避免更新带有索引的数据列,因为索引数据列的顺序就是表记录的物理储存顺序,一旦该列值改变将导致整个表记录的顺序的调整,会消耗相当大的资源,如果某一列经常会被进行更新,需要考虑一下这列是否需要建立索引

3 字段不定长的情况下,尽可能的使用varchar/nvarchar代替char/nchar,因为定长字段,当你字段的长度的不够的的时候,会从右侧进行空格自动进行补位,而变长字段,是你存储多少,实际长度就是字段值的长度加上一个用来记录长度的字节(+1),因为变长字段储存空间小,可以节省储存空间,其次对于查询来说,在一个相对较小的字段内搜索效率会高些.如果是定长的话,例如身份证号码尽可能选择char.

4 select count(*) from user 和select count(id) from user的区别

两者返回的结果是一样的,如果有主键的话 select count(主键) from user 这个时候查询最快。

5 有时候你并不能知道,哪条语句需要优化,顺便说一下mysql慢查询日志的配置

如何开启慢查询日志的查看

首先执行以下sql:

//查看你所配置的慢查询的时间,默认是10s

show variables like 'long_query_time';//默认10s

//查看慢查询配置情况,是否开启慢查询

show status like '%slow_queries%';

//查询慢查询存储日志的路径

show variable like '%slow%'

修改mysql下的my.ini文件配置,需要加上两句话

log-slow_queries="路径"//“D:\log.txt”

long_query_time=5

第一句定义慢查询日志记录的路径,第二句话是定义查询时间用时多少秒算是慢查询

配置成功一下,重启mysql,执行select varlables like '%show%',这时会把满查询开启状态,配置慢查 询时间和日志路径查询出来。根据日志就可以发现你的查询语句用时多长时间,是否需要优化

总结:简单说了一下sql的优化和慢查询日志的配置,哪里说的不清楚或者存在错误,请多多交流指教,共同学习进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值