mysql简单查询需要更长的时间

时间:2012-06-25 13:04:11

标签: mysql performance

select marksymbol,round(avg(p.closerate * p.out_share),2)
from price p
where trandate >= '2000/06/05' and trandate <= '2012/06/22' and p.markcode='RD'
group by marksymbol

在2gb内存的本地计算机上花了0.064秒,在服务器上花了1分30.38秒。

我在本地计算机上运行Windows。 服务器在Linux下运行MySQL。

两台计算机上的数据库方案相同。它们具有相同的索引和主键。

还有哪些因素会影响此查询的效果?

1 个答案:

答案 0 :(得分:3)

它们被正确编入索引,但是它们的大小相同吗? Linux服务器上的表是否明显大于测试Windows服务器上的表?

您可以寻找一些有助于解决问题的地方。

1:对于查询本身,你要解析让mysql告诉你发生了什么。

http://dev.mysql.com/doc/refman/5.0/en/explain.html

如果你安装了phpmyadmin,你可以点击“解释”,它会自动为你做(用漂亮的饼图),你就可以找到那个瓶颈。

2:服务器上的内存使用情况。使用命令

  

free -m

  

的vmstat

查看可用内存量。您的系统可能已经为您的查询进行了昂贵的交换。

3:优化查询本身。从它的外观来看,您正在使用字符串比较进行日期搜索。您可以利用mysql中强大的Datetime功能来加速日期比较。但是,我怀疑这是你的瓶颈,所以首先检查前两个选项。