作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个使用 python 和 mysql.connector 的简单 sql 查询
query = 'SELECT age, score FROM patient'
cursor.execute(query)
dr = cursor.fetchall() or cursor.fetchone()
print(dr)
在 phpmyadmin 中,这个查询非常快(0.003 秒)。如果我使用 fecthone(),它在 Python 中也运行得很快。但是,如果我使用 fetchall(),它会变得非常慢。有时需要几分钟并打印结果。有时它只是失败并停止。
我的数据大约是 440,000 行。我想实际绘制分数与年龄的关系,所以我必须读出所有数据。有人可以帮助我吗?
ps:如果我去掉 fetchall()、fetchone() 和 print,它运行得非常快。但是,如何获取我的数据并绘制它呢?
最佳答案
获取所有 440k 条记录确实很慢。
如果要画图,一般不需要440k点;您的屏幕可能只有 2000 到 4000 像素宽,小 100-200 倍。您可以显示部分绘图,仅获取相关部分数据,或者您可以预先计算缩小版本(IIRC MySQL 不支持 native 表采样)。
附带说明:如果您完全关心数据库性能,通常会 inspect query plans .获取一条记录的计划可能与获取所有记录的计划截然不同,如果您的数据库服务于许多并发请求,它们可能具有不同的优先级。这都会显着影响数据延迟。
关于python mysql.connector fetchall() 运行速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229270/
我正在寻找绘制极坐标数据的替代方法。我需要实现像 this 这样的图表具有动态选项,例如 this . 非常感谢您的帮助! 最佳答案 我个人需要这些: Highcharts JS canvasXpre
我是一名优秀的程序员,十分优秀!