数据库增长时SQLite减速(滚动日志)

时间:2012-04-27 01:51:25

标签: sql performance sqlite database-performance

我的c应用程序中存在大量sqlite减速问题 不知道是否是预期的,或者我没有正确使用sqlite。 db使用滚动日志,如此处所述http://dt.deviantart.com/journal/Build-Your-Own-Circular-Log-with-MySQL-222550965

正在写入的表有大约170个浮点列,并设置为翻转 200万行。插入行的查询如下所示:

INSERT OR REPLACE INTO table_name (row_id, <170 column names>) values ((SELECT
COALESCE(MAX(log_id), 0) % max_rows + 1 FROM table_name AS t), <170 floats>)

插入时间似乎与行数呈线性增长。首先 插入需要不到一秒钟,而60,000秒需要30秒。是 这是你所期待的?数据库存储在ext3格式的SD卡上 这是一个因素吗?

1 个答案:

答案 0 :(得分:1)

当您使用MAX(log_id)时,您要求数据库在表中找到log_id的最大值。如果该列上没有索引,则确定最大值的唯一方法是扫描整个表。

您可以使用SQL命令(

)向log_id列添加索引
create unique index idx1 on table_name (log_id);

请注意,这可能需要一段时间才能放在特别大的桌子上。如果可以,请先在副本上试一试。