我应该在 SQLite3 数据库中以什么顺序调用 ANALYZE 和 VACUUM?
In what order should I call ANALYZE and VACUUM in an SQLite3 database?
在 SQLite3 数据库中我应该以什么顺序调用 ANALYZE
和 VACUUM
?如果有的话有什么区别?我的用例是创建一个用于查找的数据库,所以我用数据填充它,调用 ANALYZE
和 VACUUM
然后不再修改数据库。
关于顺序是否对其他数据库(如 PostgreSQL 和其他数据库)重要的见解也很受欢迎。
Analyze 创建系统表(名为 sqlite_stat?(其中 ? 是一个数字)),如果存在,查询计划程序会在查询 运行 尝试优化查询时使用这些表.
Analyze 与 VACUUM 的作用几乎没有关系,这类似于磁盘驱动器的碎片整理,因为它会重新加载数据库以释放未使用的 space(页面)。
在您的情况下,我认为第一个 运行 并不重要,因为 VACUUM 不太可能减小 sqlite_stat 的大小?表。然而,理论上 VACUUM 应该是 运行 最后。如果您提供的是只读数据库,那么您应该 运行 在将数据库放入最终位置之前将两者都设置好。
在 SQLite3 数据库中我应该以什么顺序调用 ANALYZE
和 VACUUM
?如果有的话有什么区别?我的用例是创建一个用于查找的数据库,所以我用数据填充它,调用 ANALYZE
和 VACUUM
然后不再修改数据库。
关于顺序是否对其他数据库(如 PostgreSQL 和其他数据库)重要的见解也很受欢迎。
Analyze 创建系统表(名为 sqlite_stat?(其中 ? 是一个数字)),如果存在,查询计划程序会在查询 运行 尝试优化查询时使用这些表.
Analyze 与 VACUUM 的作用几乎没有关系,这类似于磁盘驱动器的碎片整理,因为它会重新加载数据库以释放未使用的 space(页面)。
在您的情况下,我认为第一个 运行 并不重要,因为 VACUUM 不太可能减小 sqlite_stat 的大小?表。然而,理论上 VACUUM 应该是 运行 最后。如果您提供的是只读数据库,那么您应该 运行 在将数据库放入最终位置之前将两者都设置好。