Android SQLite数据库:插入速度慢

2024-01-17

我需要解析一个相当大的 XML 文件(大约一百千字节到几百千字节),我正在使用Xml#parse(String, ContentHandler)。我目前正在使用 152KB 文件对此进行测试。

在解析过程中,我还使用类似于以下的调用将数据插入 SQLite 数据库中:getWritableDatabase().insert(TABLE_NAME, "_id", values)。对于 152KB 的测试文件(归结为插入大约 200 行),所有这些加在一起大约需要 80 秒。

当我注释掉所有插入语句(但保留其他所有内容,例如创建ContentValues等)相同的文件只需要 23 秒。

数据库操作有这么大的开销正常吗?我能做点什么吗?


您应该进行批量插入。

伪代码:

db.beginTransaction();
for (entry : listOfEntries) {
    db.insert(entry);
}
db.setTransactionSuccessful();
db.endTransaction();

这极大地提高了我的应用程序中的插入速度。

Update:
@Yuku 提供了一篇非常有趣的博文:Android 使用 inserthelper 更快地插入 sqlite 数据库 http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android SQLite数据库:插入速度慢 的相关文章

随机推荐

  • 如何在 MongoDB 中创建“触发器”

    我想创建一个触发器 其中插入的每个子文档都会在其他集合中增加一个字段 用于生成该集合的子文档计数 我尝试使用 MapReduce 创建搜索 但对于数百万个注册表来说速度非常慢 注意 我使用 C 但如果您喜欢展示如何在 Bson 中执行操作
  • 在 iPhone 上播放背景音频

    如何在应用程序运行时播放背景音频 Thanks 好的 这是 iOS4 和 iOS5 上背景声音的解决方案 绝对适用于 iOS 5 0 1 我仅使用 AVPlayer 对其进行了测试 它可能也适用于 MPMusicPlayerControll
  • 无法在 JavaScript 中创建多个 if 条件?

    我完全不知道为什么这不起作用 对我来说毫无意义 这将返回 语法错误 解析错误 if this attr id search opening true return false 为了更好地衡量 我还尝试了以下方法 得到了相同的结果 if 1
  • 使用 OpenCV 进行图像 alpha 合成

    我想实施这些步骤 这是我的代码 import cv2 from skimage io import import numpy as np imA cv2 imread C jpg kernel np ones 3 3 np uint8 im
  • 如何为 Spring Boot 应用程序配置端口

    如何配置 Spring Boot 应用程序侦听的 TCP IP 端口 使其不使用默认端口 8080 As 文档中说 http docs spring io spring boot docs current reference htmlsin
  • 从邻接矩阵绘制图

    我正在 MATLAB 中寻找一个命令 它可以帮助我在给定邻接矩阵的情况下绘制图形 谁能帮我 此外 我需要一些图形工具来计算图形上点之间的最短距离 集合的直径 集合之间的距离等 谢谢 检查这个Matlab函数松下春菜 http nlab ee
  • 对 Laravel 中的可选字段应用“存在”验证

    我正在 Laravel 5 4 中的一个项目上工作 我想对两个可选字段执行 存在 验证规则 仅当提供值时 我已经尝试过以下方法 Define validation rules validator Validator make request
  • 使用默认 kms 密钥进行 s3 跨帐户访问

    我的账户中有一个 s3 存储桶 默认启用了 SSEaws kms钥匙 我希望向我的存储桶提供另一个帐户的读取权限 我已点击以下链接来提供访问权限 https aws amazon com premiumsupport knowledge c
  • 缺少 [mx.rpc]::IResponder

    我正在尝试在 Flash 应用程序中使用 Flex 4 SDK 的 mx rpc 包 我将 Flex 的 rpc swc Adobe Adobe Flash Builder 4 sdks 4 0 0 frameworks libs rpc
  • 使用源链接的最佳实践

    我正在尝试在 NuGet 包中实现 Source Link 我已成功实施 GitHub README 中的说明 https github com dotnet sourcelink https github com dotnet sourc
  • 我想在脚本应用程序中运行一个函数,该函数会自动在列中查找单词并自动将该行存档到另一个选项卡

    如果 D 列包含 已取消配置 一词 我希望自动将行归档到另一个选项卡 我不是手动编辑单元格 而是从 CSV 导出中复制并粘贴 以便各列预先填充信息 我尝试了下面的脚本 但收到一条错误消息 提示未定义 我不确定这是否与我没有手动编辑工作表上的
  • C++:具有多态性的多重继承

    提前原谅菜鸟问题 我有4节课 class Person class Student public Person class Employee public Person class StudentEmployee public Studen
  • Rails 使模型的片段缓存过期

    我正在 Rails 项目中使用缓存 并且希望使特定 url 的缓存过期 我收到以下命令来使与传递的 URL 相对应的片段过期 ActionController Base new expire fragment localhost 3000
  • 如何在 python 3.6 中导入我自己的模块?

    假设我有一个如下文件 项目0 pizza py 项目0 make pizza py 和披萨 def make pizza size toppings print nMaking a str size inch pizza with the
  • 使用 Javascript 检测 html 页面中的所有图像

    我正在编写一个 Chrome 扩展程序 并试图检测网页中的所有图像 我正在尝试在我的 JS 代码中检测all网页上的图像 我的意思是 网页加载后加载的图像 用作背景的图像 在 CSS 或内联 html 中 网页加载完成后可以加载的图像 例如
  • JetBrains 的 @Contract 注释

    如何org jetbrains annotations Contract注释工作 IntelliJ IDEA 如何支持它 首先 我应该说这个注释仅供IDEA用来检查可能的错误 Java 编译器几乎会完全忽略它 它将出现在已编译的工件中 但没
  • 如何为 tf-idf 矢量器创建 scikit 管道?

    我正在经历这个官方sklearntutorial https scikit learn org stable auto examples model selection grid search text feature extraction
  • 如何为 argparse 中的现有参数添加位置选项

    我正在处理一个 Python 3 x 脚本 由其他人编写 其中输入和输出当前使用标记的可选参数指定 如下所示 parser add argument i input nargs type argparse FileType r defaul
  • 如果我只有类名的字符串,如何从类中调用静态方法?

    我怎样才能让这样的事情发挥作用 class name ClassPeer class name doSomething 取决于 PHP 版本 call user func array class name doSomething call
  • Android SQLite数据库:插入速度慢

    我需要解析一个相当大的 XML 文件 大约一百千字节到几百千字节 我正在使用Xml parse String ContentHandler 我目前正在使用 152KB 文件对此进行测试 在解析过程中 我还使用类似于以下的调用将数据插入 SQ