【发布时间】:2011-09-06 03:13:48
【问题描述】:
根据我在小型应用程序中使用 Sqlite 的经验,我总是使用 sqliteadmin 来使用它的数据库 cleanup 功能来删除我的数据库中不必要的数据。
现在我想在我的应用程序中创建一个与 sqliteadmin CleanUp 相同的方法。
如何做到这一点?
感谢您的问候
【问题讨论】:
根据我在小型应用程序中使用 Sqlite 的经验,我总是使用 sqliteadmin 来使用它的数据库 cleanup 功能来删除我的数据库中不必要的数据。
现在我想在我的应用程序中创建一个与 sqliteadmin CleanUp 相同的方法。
如何做到这一点?
感谢您的问候
【问题讨论】:
using (SQLiteCommand command = m_connection.CreateCommand())
{
command.CommandText = "vacuum;";
command.ExecuteNonQuery();
}
这里是关于如何执行真空的确切答案。
【讨论】:
您似乎正在寻找VACUUM 声明。
【讨论】:
有趣的帖子脚本。 SQLite 中的 Vacuum 语句将整个数据库复制到一个临时文件以进行重建。如果您计划通过用户或某个进程执行此“按需”,则一旦您的数据库超过 100MB,可能需要大量的磁盘空间和时间才能完成,尤其是在您查看几 GB 的情况下。在这种情况下,您最好在创建数据库时使用 AUTO_VACUUM=true pragma 语句,并且只删除记录而不是运行 VACUUM。到目前为止,这是我发现 SQL Server Compact 优于 SQLite 的唯一优势。与 SQLite 的 Vacuum 相比,Sql Server Compact 数据库的按需 SHRINK 速度非常快。
【讨论】: