我使用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,它运行速度非常快。但那么如何获取我的数据并绘制它呢?
答案 0 :(得分:1)
获取所有 440k记录可能合法地缓慢。
如果你想画一个情节,你通常不需要440k点;您的屏幕可能只有大约2000到4000像素宽,小100到200倍。您可以显示仅获取数据相关部分的绘图部分,或者您可以预先计算缩小版本(IIRC MySQL没有本机表采样支持)。
作为旁注:如果您完全关心数据库性能,请定期inspect query plans。获取一条记录的计划可能与获取所有记录的计划截然不同,如果您的数据库提供许多并发请求,它们可能会有不同的优先级。这都会显着影响数据延迟。