mysql简单查询花费较长时间

标签 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 RAM 的本地计算机上花费了 0.064 秒,在服务器上花费了 1 分 30.38 秒。

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

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

还有哪些其他因素可能影响此查询的性能?

最佳答案

它们的索引正确,但它们的大小相同吗? Linux 服务器上的表是否比测试 Windows 服务器上的表大得多?

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

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

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

如果您安装了 phpmyadmin,那么您只需单击“解释”,它会自动为您执行此操作(带有漂亮的饼图),您可以通过这种方式识别瓶颈。

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

free -m

vmstat

查看有多少可用内存。您的系统可能会为您的查询进行昂贵的交换。

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

关于mysql简单查询花费较长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189929/

相关文章:

mysql - 支持 Rails 中的外键约束

mysql - LOAD DATA LOCAL INFILE 未正确加载

performance - 在 Apache Spark 中对巨大/大型 RDD 执行的最佳或最轻量级/高效/最便宜的 RDD 操作是什么

C++ 写入选项

mysql - 寻找一种有效的方法,通过另一个非常小的表中的信息来转换巨大的 MariaDB 表中的值

mysql - 与 mysql 的内连接不起作用

MySQL更新触发器从空到非空

mysql - 比较 2 个 MySQL 表中的最新日期

python - 用 Pandas 按组有条件地抵消值

ios - 不能使用可重复使用的电池。如何优化 tableView 中的平滑滚动?