MySQL SSDictCursor fetchone()需要太多时间

时间:2018-10-23 13:56:58

标签: python mysql database python-3.x mysql-python

我正在处理大量数据,正在优化我的处理循环,但是仍然需要太多时间。因此,我注意到数据集中的每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提示时遇到了问题。

0 个答案:

没有答案