自己的mysql进行优化经历
来源:互联网 发布:115会员淘宝在哪买 编辑:程序博客网 时间:2024/06/04 01:02
这两天项目里出现了部分的性能问题,尤其是有个自己负责的模块性能问题很严重,只好做一下sql优化。
但是sql优化自己从来没有做过,眼看着一条sql语句占满了屏幕的十多行,都不知道从哪里开始下手,没办法,只好请教组里的数据库牛人来帮忙优化一下了。
下面就讲讲这个优化的过程吧。
首先我们到web服务器上取下来mysql的慢日志,这种形式的日志记录的内容比较全面,里面设置可以找到我们曾经运行过的sql语句。
把需要优化的sql语句拿下来,先用mysql的explain工具查看一下,这个主要就是看sql扫描行的数目,以及是否使用了索引。按照mysql的建议,使用索引可以极大的提升查询效率,这点不容置疑。
结果拿下来我那个模块的sql一运行,发现基本上是对整个数据库表的全表扫描,该用到的索引竟然完全都没有用到,真的不知道为什么,这个肯定会慢得很啊!
后来再看一下数据库表本身有多大,发现总计路数也就才15000多条,按理说这么大的数据量并不会影响性能,但是事实上却因为一些sql语句的写法导致了性能的急剧下降。
首先,对于能够在子查询里面过滤掉的数据,我们最好还是别拿到外面来查询了,子查询的结果集越小,那么我们需要联合查询的集合就越小;
然后就是我们sql语句遇到的最大的性能问题,在使用inner join的同时使用了select子查询,这样据说会导致数据库做笛卡尔积查询,这样的查询方式即使数据量不是很大,那么最后需要扫描的数据行数也是相当的可观的啊!
所以按照大牛的说法,把join保留,把select子查询丢掉,性能会有不小的提升;
于是乎花了两个小时把自己的sql语句全部都改成了这样,调试一下,最后发现程序效率提升的真的不是一点点!
至此,优化算是告一段落了,其它的小部分的优化后续再做吧!
- 自己的mysql进行优化经历
- 自己经历的mysql cluter配置过程
- 一条Mysql上的Sql优化经历
- 一次 MySQL 索引优化的经历
- 一次mysql优化经历
- 如何进行mysql的优化
- 自己经历的mysql cluter配置过程(二)配置文件
- 顺序 优化进行MySQL的优化
- 自己的经历
- 自己的学习经历
- mysql的优化方法,自己总结的
- 写写自己找工作的经历
- 总结自己失败的经历
- 总结自己学习的经历
- 自己开发AndroidApp的经历
- 使用mySQL的经历
- mysql联表查询优化(以下查询方法可借鉴,但一定要按自己的业务来进行相对应的优化)
- 呼叫中心的优化经历
- 进程上下文 & 中断上下文
- Linux USB驱动框架分析(一)
- 转Protocol Buffer介绍
- SGU 106 The equation
- 关于双屏显示的一些问题解释
- 自己的mysql进行优化经历
- 本地动态SQL
- NYOJ-21 三个水杯【隐式图搜索】
- Code Sing Error: Provisioninge Profile can't be found. iOS开发
- 备忘,地图
- Google: Excellent Papers for 2011
- GB2312简体中文编码表
- 在C# WinForm中添加窗体大小变化和退出前确认功能,就要自行添加Resize、FormClosing事件
- win7笔记本,作为无线路由(实现手机连接笔记本)