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 - Fatal编程技术网

Sqlite 应该在事务中运行分析吗?

Sqlite 应该在事务中运行分析吗?,sqlite,Sqlite,在sqlite(特别是版本3)中,应该在事务中运行ANALYZE吗 如果是这样的话,并且我在一个进行了大量更改的长事务的末尾,在同一个事务中运行ANALYZE可以吗,还是应该首先提交该事务并开始另一个事务以进行ANALYZE 没有以这种或那种方式说明任何事情。分析从索引列读取数据,并将统计信息写入某个内部表。 这有点类似于以下查询: INSERT OR REPLACE INTO sqlite_statXXX SELECT 'MyTable', 'MyColumn', COUNT(*), AVG(

在sqlite(特别是版本3)中,应该在事务中运行ANALYZE吗

如果是这样的话,并且我在一个进行了大量更改的长事务的末尾,在同一个事务中运行ANALYZE可以吗,还是应该首先提交该事务并开始另一个事务以进行ANALYZE


没有以这种或那种方式说明任何事情。

分析从索引列读取数据,并将统计信息写入某个内部表。 这有点类似于以下查询:

INSERT OR REPLACE INTO sqlite_statXXX
SELECT 'MyTable', 'MyColumn', COUNT(*), AVG(MyColumn) FROM MyTable
对每个索引列执行一次

与向数据库写入少量数据的任何其他SQL语句一样,事务开销将远远大于写入数据本身的实际工作量

在您的情况下,如果没有更改的统计信息,您更改的数据就不必可用,因此您也可以在同一事务中进行分析

如果数据库太大,以致于ANALYZE运行很长时间,那么将其执行延迟到稍后与更重要的事务不冲突时可能是有意义的