我正在操纵一个大的sqlite3数据库并遇到慢速选择查询。我的目标是将所有数据库加载到我创建的Python对象中。
简而言之,我在0.5秒内进行46次“SELECT”查询,这对我来说非常慢(大约100次查询/秒)。
基本上,我的所有查询都从表中检索一行(检查id)。它们看起来像那样:
cursor_data.execute("SELECT * FROM TABLE_DATA WHERE DATA_ID = {}".format(id))
我在查询循环的开头做BEGIN TRANSACTION
。但是,不确定这对“选择”查询是否有帮助。
有什么想法吗?
从第一个表中检索所有行,然后从第二个表中检索所有行,依此类推,比从表中检索一行,然后从另一个表中检索一行,并循环直到所有内容都加载?
非常感谢!
答案 0 :(得分:0)
由于我设法解决了我的问题,我将回答我的问题:
是100次查询/秒很慢
一次选择一行不是加载整个数据库的有效方法
查询BEGIN TRANSACTION
和END TRANSACTION
确实无需在此处执行,应删除
我做了什么:
首先加载所有数据库(查询所有表格):query = "Select * from TABLE"
遍历所有查询的结果以执行相应的存储(对象,数组,w / e)
在对结果查询数组建立索引时要小心。像data = array[condition_on_array_col_1 & condition_on_array_col_2]
这样的事情可能需要很长时间。如果您知道如何构建数据库,则可以利用它。