相反,如果我将完全相同的表转储到csv文件中,并使用以下代码处理它
f = open('list.csv','rb')
lines = f.read().splitlines()
f.close()
print len(lines)它只需要0.08-0.3秒的
我尝试了使用MySQLdb ()或mysql.connector ()
import time
start = time.time()
import MySQLdb as mdb
con = mdb.connect('127.0.0.1', 'login', 'p', 'db');
with con:
cur = con.cursor()
cur.execute("SELECT * FROM table")
rows = cur.fetchall()
print len(rows)
print 'MySQLdb %s' % (time.time()-start)在高CPU负载下花费了3.7-8秒的时间。
是否有可能达到与csv文件相同的速度?
编辑我的MySQL服务器似乎没问题。在mysql控制台中:
SELECT * from TABLE;
....
80789 rows in set (0.21 sec)发布于 2014-09-10 07:51:55
当完成cur.execute(...)时,整个查询结果将在客户端恢复为一个列表。为此,请检查MySQLdb/cursor.py中的self._rows属性。
也就是说,从MySQL数据库读取文件内容和获取查询结果的时间成本不同。和我们大家一样,内置函数总是比3PP函数更快。因此,我不认为有办法使cursor.execute()的速度与open()相同。
至于为什么open()更快,我建议您研究一下Python源代码。这是链接。
希望能帮上忙。
https://stackoverflow.com/questions/25755737
复制相似问题