【发布时间】:2015-11-02 21:12:12
【问题描述】:
编辑:我的错误非常基本:我没有使用 PRIMARY KEY 进行索引。为了使这个线程更有用一点,我添加了性能数据来搜索我的表,无论是否使用索引来进行性能比较。
我在 Windows 和 linux 下运行的应用程序中使用 python 中的 sqlite3。我的数据库文件目前在 700 MB 范围内。
我认识到我最大的表中的条目数量存在一个特殊的性能问题。它由 10 列整数和浮点数以及一个 varchar 组成。
该表有 1.6 个 Mio 行。对于该大小,每个 SELECT 或 UPDATE 命令需要 327 毫秒。这对我的应用程序来说太长了,因为它现在主要等待 sqlite。
我认识到,随着表大小的减小,性能会急剧提高。我发现:
- 1.6M 条目 327 ms 不带索引 => 29.7 ms 带索引
- 670k 条目 149 ms 不带索引 => 28.8 ms 带索引
- 280k 条目 71 ms w/o indexing => 28.5 ms with indexing
- 147k 条目 44 ms w/o indexing => 28.0 ms with indexing
- 19k 条目 25 ms 不带索引 => 25.0 ms 带索引
结论:使用索引搜索时间几乎保持不变,而不使用索引的搜索时间几乎随着表大小线性上升。仅对于非常小的表,差异可以忽略不计。
【问题讨论】:
-
你的架构是什么?您有什么疑问?你在使用索引吗?
-
如果您找到了解决您自己问题的方法,请接受答案或添加您自己的答案。请不要用答案编辑您的问题。
标签: performance sqlite