简单选择查询非常慢

时间:2019-08-28 21:20:40

标签: python sqlite

我有一个sqlite数据库,可以用作缓存并使用此功能

def read_cache(table):
    if not table.isidentifier(): # <- my version of sqli protection used to allow for user to provide table and column names
        raise ValueError(f"Invalid table name '{table}'")
    for record in cur.execute(f"SELECT * FROM {table};"):
        yield {**record}

调用list(read_cache('some_values'))会花很长时间(将近一分钟)返回,但是当我对数据库本身运行查询时(如cur.execute('select * from some_values;').fetchall()[r for r in cur.execute('select * from some_values;')]),它将立即返回。 / p>

有问题的表有4万行,每行2列

我应该怎么做才能发现问题或加快速度?

编辑:我想我发现了这个问题,速度问题仅在运行某些threading.Thread的解释器中发生...想知道问题是否与GIL相关...会必须看看该怎么做...

0 个答案:

没有答案