慢SQLite选择查询

时间:2017-04-20 10:47:23

标签: mysql sqlite

我正在操纵一个大的sqlite3数据库并遇到慢速选择查询。我的目标是将所有数据库加载到我创建的Python对象中。

简而言之,我在0.5秒内进行46次“SELECT”查询,这对我来说非常慢(大约100次查询/秒)。

基本上,我的所有查询都从表中检索一行(检查id)。它们看起来像那样:

cursor_data.execute("SELECT * FROM TABLE_DATA WHERE DATA_ID = {}".format(id))

我在查询循环的开头做BEGIN TRANSACTION。但是,不确定这对“选择”查询是否有帮助。

有什么想法吗?

从第一个表中检索所有行,然后从第二个表中检索所有行,依此类推,比从表中检索一行,然后从另一个表中检索一行,并循环直到所有内容都加载?

非常感谢!

1 个答案:

答案 0 :(得分:0)

由于我设法解决了我的问题,我将回答我的问题:

  • 是100次查询/秒很慢

  • 一次选择一行不是加载整个数据库的有效方法

  • 查询BEGIN TRANSACTIONEND TRANSACTION确实无需在此处执行,应删除

我做了什么:

  • 首先加载所有数据库(查询所有表格):query = "Select * from TABLE"

  • 遍历所有查询的结果以执行相应的存储(对象,数组,w / e)

  • 在对结果查询数组建立索引时要小心。像data = array[condition_on_array_col_1 & condition_on_array_col_2]这样的事情可能需要很长时间。如果您知道如何构建数据库,则可以利用它。