編輯:我的錯在這裏是非常基本的:我沒有使用PRIMARY KEY索引。爲了使這個線程更有用,我添加了性能數據,用於搜索我的表,並且不用索引進行性能比較。SQLite在大型表上的性能
我在一個運行在windows和linux下的應用程序中使用python中的sqlite3。我的數據庫文件當前在700 MB的範圍內。
我認識到一個關於我最大表中條目數量的特殊性能問題。它由10個列組成,整數和浮點數以及一個varchar。
該表有1.6 Mio行。對於那個尺寸,每個SELECT或UPDATE命令需要327ms。這對於我的應用來說太長了,因爲它現在主要在sqlite上等待。
我認識到,隨着表格大小的下降,性能會急劇增加。我發現:
- 1.6M條目327毫秒的w/o索引=> 29.7毫秒索引
- 670K條目149毫秒的w/o索引=> 28.8毫秒索引
- 280K條目71毫秒瓦特/ O索引=> 28.5毫秒索引
- 147K條目44毫秒的w/o索引=> 28.0毫秒索引
- 19K條目25毫秒的w/o索引=> 25.0毫秒索引
CONCLUSI ON:使用索引搜索時間幾乎保持不變,而搜索次數幾乎線性地隨着表大小而增加。只有非常小的表格才能忽略不同。
你的模式是什麼?你有什麼疑問?你在使用索引嗎? –
如果您發現自己的問題的解決方案,請接受答案或添加自己的問題。請不要用答案編輯你的問題。 –