我正在尝试通过导入带有url的csv文件来创建一个sqlite数据库.该文件有大约600万字符串.这是我用过的命令
create table urltable (url text primary key);
.import csvfile urldatabase
Run Code Online (Sandbox Code Playgroud)
大约300万网址后,速度减慢了很多,我的硬盘不断旋转.我已经尝试将csv文件拆分为1/4块但我遇到了同样的问题.
我在stackoverflow上阅读了类似的帖子,尝试使用BEGIN...COMMIT块,PRAGMA synchronous=OFF但没有一个帮助.我能够创建数据库的唯一方法是从url中删除主键约束.但是,当我运行一个select命令来查找特定的url时,需要2-3秒,这对我的应用程序不起作用.在url上设置主键时,选择是即时的.请告诉我我做错了什么.
[编辑] 有助于提出的建议摘要:
仍然,使用主索引,数据库大小是我尝试导入的原始csv文件的两倍多.有什么方法可以减少吗?
将缓存大小增加到足以包含内存中所有数据的大小.页面大小和缓存大小的默认值相对较小,如果这是桌面应用程序,则可以轻松地多次增加缓存大小.
PRAGMA page_size = 4096;
PRAGMA cache_size = 72500;
Run Code Online (Sandbox Code Playgroud)
会给你一个不到300mb的缓存大小.请记住,必须在创建数据库之前设置页面大小.默认页面大小为1024,默认缓存大小为2000.
或者(或几乎等效)您可以完全在内存数据库中创建数据库,然后使用备份API将其移动到磁盘数据库.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |