Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite下降指数非常慢_Sqlite_Indexing_Sql Drop - Fatal编程技术网

sqlite下降指数非常慢

sqlite下降指数非常慢,sqlite,indexing,sql-drop,Sqlite,Indexing,Sql Drop,我有一个大约75GB的sqlite数据库。在数据库上创建索引几乎需要4个小时。索引后,文件大小约为100GB 通常,我必须修改(插入/删除/更新)大块(几GB)的数据。现在,我正在修改表之前删除索引。修改完成后,将重新创建索引 删除索引需要花费大量时间(与创建索引的顺序相同) 在一些非常特殊的情况下(当需要重新生成整个数据时),我能够写入一个新的数据库文件并用原始文件替换它。这种策略不需要我放弃指数 在无法切换数据库文件的情况下,如何加快索引删除速度?欢迎提出任何建议/想法 我认为这是单文件数据

我有一个大约75GB的sqlite数据库。在数据库上创建索引几乎需要4个小时。索引后,文件大小约为100GB

通常,我必须修改(插入/删除/更新)大块(几GB)的数据。现在,我正在修改表之前删除索引。修改完成后,将重新创建索引

删除索引需要花费大量时间(与创建索引的顺序相同)

在一些非常特殊的情况下(当需要重新生成整个数据时),我能够写入一个新的数据库文件并用原始文件替换它。这种策略不需要我放弃指数

在无法切换数据库文件的情况下,如何加快索引删除速度?欢迎提出任何建议/想法


我认为这是单文件数据库的局限性之一。如果表/索引存储在单独的文件中,那么这些文件可以简单地标记为删除。

并不是说它不起作用,而是我认为您的问题可能与SQLite中有100GB有关。我从来没有听说过有人用它来处理这么多的数据。我无法控制用户生成的数据量(除非专门将信息拆分并保存到不同的数据库文件中)。好的方面是,即使是一个100GB的文件(有3B条记录),查询仍然不到1秒。SQLite没有理由不能处理100GB大小的数据库,但与所有关系数据库一样,某些操作的性能(特别是表或索引重建)如果没有足够的RAM一次保存所有数据库,将受到很大影响。尝试在内存有限的100GB MySQL或Postgres表上修改一些索引,这也会花费很长时间。