自己的mysql进行优化经历

原创 2012年03月23日 16:46:16

这两天项目里出现了部分的性能问题,尤其是有个自己负责的模块性能问题很严重,只好做一下sql优化。

但是sql优化自己从来没有做过,眼看着一条sql语句占满了屏幕的十多行,都不知道从哪里开始下手,没办法,只好请教组里的数据库牛人来帮忙优化一下了。

下面就讲讲这个优化的过程吧。

首先我们到web服务器上取下来mysql的慢日志,这种形式的日志记录的内容比较全面,里面设置可以找到我们曾经运行过的sql语句。

把需要优化的sql语句拿下来,先用mysql的explain工具查看一下,这个主要就是看sql扫描行的数目,以及是否使用了索引。按照mysql的建议,使用索引可以极大的提升查询效率,这点不容置疑。

结果拿下来我那个模块的sql一运行,发现基本上是对整个数据库表的全表扫描,该用到的索引竟然完全都没有用到,真的不知道为什么,这个肯定会慢得很啊!

后来再看一下数据库表本身有多大,发现总计路数也就才15000多条,按理说这么大的数据量并不会影响性能,但是事实上却因为一些sql语句的写法导致了性能的急剧下降。

首先,对于能够在子查询里面过滤掉的数据,我们最好还是别拿到外面来查询了,子查询的结果集越小,那么我们需要联合查询的集合就越小;

然后就是我们sql语句遇到的最大的性能问题,在使用inner join的同时使用了select子查询,这样据说会导致数据库做笛卡尔积查询,这样的查询方式即使数据量不是很大,那么最后需要扫描的数据行数也是相当的可观的啊!

所以按照大牛的说法,把join保留,把select子查询丢掉,性能会有不小的提升;

于是乎花了两个小时把自己的sql语句全部都改成了这样,调试一下,最后发现程序效率提升的真的不是一点点!

至此,优化算是告一段落了,其它的小部分的优化后续再做吧!


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用调度和锁定进行MySQL查询优化

DBA在日常工作中经常会遇到如何让单独的查询执行的速度更快。MySQL还允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以...

Mysql LIMIT如何正确对其进行优化

以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数。LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第...

根据STATUS信息对MySQL进行优化

公司的nagios监控服务器长期对内网用MySQL数据库发出ctritical报警,因为我将其他同事的手机短 信报警也开通了,搞得整个系统组的同事都怨声载道(呵呵)这时候就需要根据其status对其...
  • cowbane
  • cowbane
  • 2011年03月04日 15:02
  • 390

一个100万数据(MYSQL)的网站,目前访问速度慢,如果让你优化,你会从哪些方面进行考虑,谈谈你的思路

1、应尽量避免在 where 子句中使用!=或   2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。   3、应尽量避免在 where 子...

MySql数据库优化可以从哪几个方面进行?

数据库优化可以从哪几个方面进行?老司机来带你!

利用mysqltuner工具对mysql数据库进行优化

mysqltuner工具使用,本工具建议定期运行,发现目前MYSQL数据库存在的问题及修改相关的参数 工具的下载及部署 解决环境依赖,因为工具是perl脚本开发的,需要perl脚本环境 # ...

【MySql性能优化二】利用explain进行查询和分析sql语句

在mysql数据库中为我们提供了explain方法可以通过它来帮助我们分析我们的sql语句。 登录mysql后,具体使用如下这里的了例子都以上篇博客中安装的实例数据库sakila为例: explain...

根据status信息对MySQL服务器进行优化

网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一...

mySql解压版进行配置说明

  • 2016年03月01日 13:37
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己的mysql进行优化经历
举报原因:
原因补充:

(最多只允许输入30个字)