python - 性能 - sqlite3或大型词典列表

时间:2017-01-15 06:36:30

标签: python mysql dictionary sqlite

我有一个本地数据库,其中包含许多SQL表(每个表约20米行),我需要迭代。每行都有一个纪元日期值,但这些不是唯一的。例如,可能有10行具有相同的日期,后跟100秒或更长的间隙。另一个程序发送一个查询,说“我想查看这个日期范围的信息”。我需要获取请求的行,将它们格式化为字典列表,然后将其返回给请求它的程序。请求通常只持续1-2秒,但偶尔也可能长达一天。请求总是及时向前移动,从不向后移动,但同一日期经常被要求不止一次。我可以更快地返回数据,其他程序可以越快地发出下一个请求,我们就能越早回家:)

您认为处理这种情况的最快方法是什么?

A - 经常向数据库查询每秒符合我日期要求的行,格式化查询结果,返回它们。

B - 定期查询一次将多行加载到按日期排序的词典列表中。大量的next()和index()作为列表被切片并返回到其他程序。一旦列表缩小超过定义的长度,另一个DB查询就会重新生成它。

C - 对许多行进行相同的定期查询,但将结果放入sqlite数据库。然后对这个内存数据库进行频繁的小查询,格式化结果,返回它们。

我觉得B和C肯定比A快。但是我会看到更好的性能与更小的内存数据库一起工作,还是从一长串词典的开头切入?或者也许还有其他选择我没有考虑过?

感谢您的任何意见。

0 个答案:

没有答案