改变了对Mysql子查询的看法
浏览:3611次 出处信息
曾几何时,使用mysql的时候用explain分析查询,发现mysql里面的子查询很慢,而mysql文档里很多时候也推荐使用join,于是我认定了mysql的子查询实现的很烂,以后的程序里面都用join了。例如上面的查询我就写成:select a.* from table1 a join table2 b on b.table2_field=xxx and b.table1_id=a.id where a.table1_field = yyy;
今天早上,接到一个电话,说ucdchina.com挂了。上去一看,一个表被管理员rename了,理由是涉及这个表的查询太耗时了,平均40s左右。我只能说,dreamhost实在太烂了,两个表总共不到2000条数据,怎么也不用那么久来查吧。我拿到管理员发出的慢查询,用explain看了一下,果然use filesort,use temporary file,SQL语法就是类似上面join那个例子。然后我根据查询里的字段建了两个索引,但是没效果。最后习惯性的尝试了一下子查询,把上面join的那个格式修改为in的方式,explain 的结果马上变成use index; use where。终于又对mysql的in恢复了信心。
优化了ucdchina.com的将近10条语句,整个网站速度快多了。
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:星月浪子 来源: 那一剑的风情
- 标签: 子查询
- 发布时间:2009-10-28 22:46:15
近3天十大热文
-
[927] WordPress插件开发 -- 在插件使用 -
[133] 解决 nginx 反向代理网页首尾出现神秘字 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 整理了一份招PHP高级工程师的面试题 -
[50] 全站换域名时利用nginx和javascri -
[50] 海量小文件存储 -
[50] 用 Jquery 模拟 select -
[49] CloudSMS:免费匿名的云短信 -
[48] Innodb分表太多或者表分区太多,会导致内 -
[47] jQuery性能优化指南
