mysql在开发中的优化技巧和慢查询日志的配置
2017-05-15 08:58
471 查看
在平时开发中,数据库的使用以及优化,也对我们所开发的系统或者平台的性能是一种考验,如何既能够满足需求又能提高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的优化和慢查询日志的配置,哪里说的不清楚或者存在错误,请多多交流指教,共同学习进步。
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的优化和慢查询日志的配置,哪里说的不清楚或者存在错误,请多多交流指教,共同学习进步。
相关文章推荐
- mysql在开发中的优化技巧和慢查询日志的配置
- 【MySql性能优化一】性能测试环境配置和慢查询日志的使用
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
- MySQL查询优化:查询慢原因和解决技巧
- MYSQL查询优化技巧
- mysql优化(1)show命令 慢查询日志 explain profiling
- 【汇总】mysql_ my.cnf优化,安全配置和日志
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql 优化之查询高速缓冲配置 小记
- mysql性能优化-慢查询分析、优化索引和配置
- mysql 百万数据存储过程 查询优化技巧
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysqlserver优化之mysql日志配置
- mysql_ my.cnf优化,安全配置和日志
- mysql 百万数据存储过程 查询优化技巧
- mysql查询、索引、配置优化
- MySQL-五种日志(查询日志、慢查询日志、更新日志、二进制日志、错误日志)、备份及主从复制配置