简单的优化mysql,提高查询性能_MySql_数据库_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 数据库 > MySql > 简单的优化mysql,提高查询性能

简单的优化mysql,提高查询性能

 2011/11/24 10:45:15  fuhao_987  http://fuhao-987.iteye.com  我要评论(0)
  • 摘要:其实下面要讲的优化方法都是大家熟悉的,只是对于自己来说,是前进了一小步,而且看到结果很满意。免不了有点高兴,所以就写下来。问题:在php中用select语句查询mysql数据库,返回结果很慢。实在不能忍受1、最开始的情况:php中的select语句:selectarticle_diffsize.contentfromarticle_diffsize,article_infowherearticle_diffsize.ArticleID=article_info
  • 标签:SQL MySQL 优化
其实下面要讲的优化方法都是大家熟悉的,只是对于自己来说,是前进了一小步,而且看到结果很满意。免不了有点高兴,所以就写下来。

问题:在php中用select语句查询mysql数据库,返回结果很慢。实在不能忍受
1、最开始的情况:
php中的select语句:
select article_diffsize.content from article_diffsize,article_info where article_diffsize.ArticleID = article_info.ArticleID and article_info.ArticleName='计算机程序'

mysql
两个表article_diffsize,article_info没有建任何索引
结果这个从php中读取数据过程,所花的时间是:

6s啊,这是一个多么长的时间啊。。。
因为对mysql的优化完全没有概念。所以跑去图书馆,借了本书《php 和mysql web 开发》。
看到里面讲用explain可以获取关于sql语句如何执行的信息。运行以后发现rows太多,然后按照方法给article_diffsize,article_info两个表的ArticleID都加上了索引。
2、
时间是:

发现select语句出来是这么个情况:

16311行啊~!!!怎么还有这么多。。
也不知道要怎么办了。
3、
看到书里有一行select语句是用join来实现两个表连接,抱着尝试的心态,把select语句改为如下:
select content from article_diffsize left join article_info on (article_diffsize.ArticleID = article_info.ArticleID)where article_info.ArticleName='计算机程序'

时间:

explain后:

4、
还是不行啊,不过感觉改变select和建立索引是个好方法。。最后,我采用了这种方式:
select content from article_diffsize where ArticleID = (select ArticleID from article_info where ArticleName='计算机程序')

然后给article_info表的ArticleName建了个索引
然后。。。。。
时间:

explain结果:

不到1s的时间。。可以接受了。。。
发表评论
用户名: 匿名