在“DELETE FROM table”之后更改sqlite文件大小

时间:2010-01-27 00:40:12

标签: sqlite

我正在使用sqlite3文件。

首先,我进入了比较大的数据库,文件大小约为100 mb。

比我做的

$db->exec("DELETE FROM table");

并输入该数据库的一小部分。但文件大小仍然是100 MB。

删除内容时,如何更改sqlite文件大小?

3 个答案:

答案 0 :(得分:95)

您要查找的命令是vacuum。还有一个pragma可以自动吸尘。

来自文档:

  

当一个对象(表,索引,触发器,   从数据库中删除或查看)   它留下了空旷的空间。这个   空的空间将在下一次重复使用   时间新信息被添加到   数据库。但在此期间,   数据库文件可能大于   严格必要的。另外,经常   插入,更新和删除都可以   导致数据库中的信息   变得支离破碎 - 被刮掉了   相反,整个数据库文件   而不是聚集在一起。

     

VACUUM命令清除主要内容   数据库通过将其内容复制到   临时数据库文件和重新加载   来自的原始数据库文件   复制。这消除了免费页面,   将表数据对齐为连续的,   并以其他方式清理数据库   文件结构。

答案 1 :(得分:25)

你可以这样做

$db->exec("DELETE FROM table");
$db->exec("vacuum");

,文件大小将被更改。

答案 2 :(得分:-3)

清理数据库 SQLite有两个专门用于清理重新索引和真空的命令。 reindex用于重建索引。它有两种形式: reindex collat​​ion_name; reindex table_name | index_name;