循环运行sqlite查询在调用20次后速度变慢

0 人关注

我有一个sqlite数据库,我正在运行一个查询,有一个选择语句的工作速度比我想象的要慢很多。

我有一个db的方法来获取一个单一的表

def get_tables_by_id(self, id)
   with self.conn as conn:
     c = conn.cursor()
     c.execute(SELECT * FROM tbl WHERE foreign_id = ? AND date(date) >= ? AND date(date) <= ?, params)
     return c.fetchall()

然后我有另一个方法,在不同的参数下做了许多次。我没有准备一个单一的语句来一次性获取它们,我想我只是循环并调用get_tables_by_id,因为我没有通过网络冲击数据库,如果我一次性查询它们,我必须做一些操作来组织所有的东西。我以为既然sqlite在文件系统上运行,它就会很快......但在调用上述方法20次左右后,它就变慢了。(我试图调用它1000次)

然而,如果我执行下面的SQL,并在一个大的查询中运行它,它就会立即返回所有的结果......