Sqlite 应该在事务中运行分析吗?
在sqlite(特别是版本3)中,应该在事务中运行ANALYZE吗 如果是这样的话,并且我在一个进行了大量更改的长事务的末尾,在同一个事务中运行ANALYZE可以吗,还是应该首先提交该事务并开始另一个事务以进行ANALYZESqlite 应该在事务中运行分析吗?,sqlite,Sqlite,在sqlite(特别是版本3)中,应该在事务中运行ANALYZE吗 如果是这样的话,并且我在一个进行了大量更改的长事务的末尾,在同一个事务中运行ANALYZE可以吗,还是应该首先提交该事务并开始另一个事务以进行ANALYZE 没有以这种或那种方式说明任何事情。分析从索引列读取数据,并将统计信息写入某个内部表。 这有点类似于以下查询: INSERT OR REPLACE INTO sqlite_statXXX SELECT 'MyTable', 'MyColumn', COUNT(*), AVG(
没有以这种或那种方式说明任何事情。分析从索引列读取数据,并将统计信息写入某个内部表。 这有点类似于以下查询:
INSERT OR REPLACE INTO sqlite_statXXX
SELECT 'MyTable', 'MyColumn', COUNT(*), AVG(MyColumn) FROM MyTable
对每个索引列执行一次
与向数据库写入少量数据的任何其他SQL语句一样,事务开销将远远大于写入数据本身的实际工作量
在您的情况下,如果没有更改的统计信息,您更改的数据就不必可用,因此您也可以在同一事务中进行分析
如果数据库太大,以致于ANALYZE运行很长时间,那么将其执行延迟到稍后与更重要的事务不冲突时可能是有意义的