我正在处理大量数据,正在优化我的处理循环,但是仍然需要太多时间。因此,我注意到数据集中的每1000-2000行都使用fetchone()进行了1-5秒的读取!而其他所有的都需要10到30纳秒!!
db = MySQLdb.connect(host="localhost", user="****", passwd="****", db="****", charset='utf8',
cursorclass=MySQLdb.cursors.SSDictCursor)
c = db.cursor()
c.execute(sql)
while True:
event = c.fetchone()
if not event:
return
print(event)
我正在打印最长的fetchone()函数调用:
(row index : time in sec)
1898 : 5.86757670
3783 : 6.63812080
5667 : 5.00934410
7559 : 5.21368210
9425 : 5.49990800
11312 : 4.47716010
但是在较小的数据集上,峰值也较小,但它们发生的频率更高:
(row index : time in sec)
561 : 0.00169070
714 : 1.43662880
1416 : 2.07252320
2106 : 1.77626870
2811 : 1.78253030
P.S。我想这可能与范围优化有关,因为我内部有一个很大的“( ID的列表)中的id”。但是我在使用NO_RANGE_OPTIMIZATION提示时遇到了问题。