我正在使用一个相当大的SQLite数据库(300 - 400 MB)和一个Python 3程序,它有两列,我称之为键和值。键列已编制索引,但不是唯一的。有时某个键没有或有少量值,有时几百个。
出于某种原因,以下内容:
SELECT value FROM hashtable WHERE key = ?
速度非常不稳定!我可以运行我的程序(其中SELECT语句使用了几千次)并且每个SELECT 500的平均时间突然 - 没有改变任何东西! - 下次运行时平均速度为300毫秒。行为似乎是二进制的,或者它很快,或者它很慢,它在我的程序的一次运行中不会改变,并且经常当它变成慢模式时我必须删除索引并重建它以使其再次快速。
任何人都知道这可能是什么原因?
谢谢!
答案 0 :(得分:1)
您似乎拥有所需的所有信息:如果通过重建索引恢复性能,那么性能不佳可能是由于更新引起的索引碎片,但您没有提到是更新它。在不更改数据库内容的情况下,我无法想到性能应该随着时间的推移而发生变化的任何原因。