在 Android 上使用 SQLite 的 AUTOINCREMENT 的开销是多少?

2024-04-20

在 SQLite 文档中,它包括以下内容:-

AUTOINCRMENT 关键字会施加额外的 CPU、内存、磁盘空间和 磁盘 I/O 开销,如果不是严格需要的话应该避免。这是 通常不需要。

and

AUTOINCRMENT 关键字实现的行为巧妙地 与默认行为不同。使用自动增量,行 自动选择的 ROWID 保证具有以下 ROWID: 以前从未被同一数据库中的同一表使用过。还有 自动生成的ROWID保证是单调的 增加。这些是某些应用中的重要属性。 但如果您的应用程序不需要这些属性,您应该 自从使用 AUTOINCREMENT 以来,可能会保持默认行为 插入每一行时需要完成额外的工作,因此 导致 INSERT 运行速度稍慢。

以上引述均来自SQLite自动增量 https://sqlite.org/autoinc.html

那么,预计会产生什么样的影响,自动增量会慢多少呢?


我的估计,注意到我不是统计学家,开销是这样的8-12% slower.

我使用得到的结果3结构相似且简单tables有两个 TEXT 列,正在运行10,000每个表插入,在 4 台设备上重复此操作 5 次。

表1(Dflt列)仅使用两个 TEXT 列创建(因此利用默认的 ROWID)。

表2(AI栏)是使用创建的_id INTEGER PRIMARY KEY AUTOINCREMENT除了两个 TEXT 列之外。

表3(无AI栏)是使用创建的_id INTEGER PRIMARY KEY除了两个 TEXT 列之外。

So Table 2使用ROWID选择算法略有不同用于插入件。

使用的四种设备是:-

  • (1) Genymotion 模拟设备(自定义平板电脑 - 5.1.0 - API 22 - 1536x2048 )

  • (2) Onix 10" 平板电脑 (AT101-1116 )

  • (3) 一台 HTC 1 M8 (HTC_0PKV1 )

  • (4)一台联想A10-30平板电脑(联想TB2-X30F )

    我得到的结果是:-

当所有内容仅在 1 个事务中运行时(即beginTransaction();在任何插入之前,用setTransactionSuccessful(); and endTransaction();在所有插入之后(对于所有表,即全部 150,000 次插入),例如:-

比较两个表,突出显示使用事务对性能的好处。

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

在 Android 上使用 SQLite 的 AUTOINCREMENT 的开销是多少? 的相关文章

  • Visual Studio 不允许我在 Android 物理设备上进行调试

    我正在使用 Xamarin 和 Visual Studio 2013 开发 Android 应用程序 我已将 Android 小程序连接到计算机 Sansung Kies 识别了该设备 Adb 也能识别它 因为当我输入 adb device
  • Android 主机意图过滤器通配符

    是否可以在 android host 属性上使用通配符 就像是 android host site com android pathPattern android pathPrefix m android scheme http gt Or
  • 在 Android 中创建和使用 9 补丁图像

    我最近听说了 9 补丁图像 我知道它是 9 平铺的并且是可拉伸的 我想了解更多 如何创建 9 块图像 有什么工具吗 我可以通过 AndroidSDK 或代码创建它吗 9 patch 相对于普通 png 的主要优点 它是否可以根据屏幕动态 自
  • Android中如何使用洪水填充算法?

    我是Android编程新手 最近尝试编写一个简单的应用程序 仅供练习 在这个中 我想在用户点击时为图像着色 但我不知道如何开始 我读过不同的主题 其中提到使用 洪水填充 算法 我在网上找到了它 但我不知道如何将它放入我的简单应用程序中 我找
  • Android 上的 Firebase:如何检查 Firebase 身份验证失败原因?

    我在 Android 上使用 Firebase 和 Firebase Auth 功能 I try FirebaseAuth signInWithEmailAndPassword如果失败 我想知道为什么登录过程失败 The signInWit
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • 我可以在 firebase android 中加载另一个用户个人资料图像吗?

    如果我有其他用户的电子邮件但我以其他用户身份登录 我是否可以加载其他用户的个人资料图像 如果您使用 Firebase Storage 那么从技术上讲是的 它只是一个您可以从中检索任何文件的文件系统 如果不伪造您的应用程序 获取 api 密钥
  • Android Studio - 错误:未捕获翻译错误:com.android.dx.cf.code.SimException:本地 0001:无效

    我刚刚使用 Android Studio 设置了一台新计算机 并从 bitbucket 导入了我的项目 问题是我现在在尝试构建项目时遇到此错误 信息 Gradle 任务 app clean app generateDebugSources
  • 连接到不可发现的蓝牙设备

    我正在开发一个安卓应用程序 只是一个一般性问题 是否可以连接到公开不可发现的设备 提前致谢 如果您之前已与该设备配对 则即使该设备未处于可发现模式 也可以再次连接到该设备 参见这篇文章 以编程方式连接到配对的蓝牙设备 https stack
  • 访问角落里的存储

    我能找到的与文件存储有关的最接近文档的是这个帖子 http nookdeveloper zendesk com entries 20257971 updated what are the size constraints on my app
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • 如何在Android Compose中使用otf类型字体文件?

    我正在学习使用 Android Jetpack Compose 现在我有一个正则 otf字体文件在资产 字体 我想在文本中使用它 java lang RuntimeException Font asset not found commonu
  • 使用嵌套的 hashmap 参数发送 volley 请求

    我正在使用 android volley 框架向我的服务器发送 jsonobject 请求 get 请求工作正常 现在我想发送一个带有请求参数的 post 请求 该请求参数是嵌套的 hashmap 我重写 getparams 方法 但它期望
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • 具有矢量可绘制的 ImageView 的 Resources$NotFoundException

    我遇到了崩溃 Resources NotFoundException用于在活动创建时绘制的矢量 21 日前崩溃 安卓工作室2 1 支持库24 0 0 Gradle插件2 1 0 目标SDK 23 最小SDK 15 buildTools版本
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK

随机推荐

  • ComboBoxModel 事件不起作用

    我似乎不理解事件等概念 在阅读了有关如何实现侦听器等内容的一段时间后 我发现 Java 教程说我应该扩展AbstractListModel触发数据事件 由于某种原因它仍然不起作用 我做错了什么吗 以及预计会出现什么样的代码addListDa
  • C++中如何处理bad_alloc?

    有一种方法叫做foo有时会返回以下错误 terminate called after throwing an instance of std bad alloc what std bad alloc Abort 有没有一种方法可以让我使用t
  • 将 mogenerator 集成到 Xcode 4 中

    在我的应用程序中 我使用核心数据来实现持久数据保存 因为我已经看到 mogenerator 提供了一种很好的方法来创建和维护NSManagedObject子类 也具有附加功能 我正在寻找一些在 Xcode 4 中集成 monogenerat
  • 如何将 CSS 应用到 Mac Chrome 选择框?

    无论我做什么 使用 Mac OSX 10 9 2 和 Chrome 版本 33 0 1750 152 padding background color 没有任何效果 我真的只是想申请一个padding top and padding bot
  • 直到用户输入匹配变量为止

    好的 所以我正在尝试创建一个用户名 密码登录脚本 可能不是我仍在研究的最安全的想法 我的脚本将加载变量以与这样的文件进行比较 现在我只是在研究密码部分 path to variables conf 该文件将包含一个名为的变量 PASS SO
  • C# 睡眠检测 PowerModeChanged

    我希望我的程序在计算机进入睡眠状态时写入控制台 但我无法这样做 我认为我设置错误 这是我所拥有的 编辑 新的 cs 文件 using LightFX using System using System Threading using Sys
  • 如何让 Pyglet 为 Python 3 工作?

    我很高兴能使用 Pyglet 因为它的所有功能 但是我在 Python 3 上安装 Pyglet 的最新开发版本时遇到问题 我知道人们已经问过这个问题 但没有一个回答对我有任何帮助 更新 我的意思是 我无法为 Python 3 安装 Pyg
  • 循环动态展开子网格 - JQGrid

    我有一个带有使用 subGridRowExpanded 的子网格的网格 我想动态扩展网格的一些行 所以我写了以下内容 在第一个网格的 GridComplete 事件中 ids 是我的网格的行 id 数组 for int i 0 i lt i
  • 截断轨道后无法使用原始数据

    问题是如果我使用然后我尝试打印它 我仍然看到所有 html 标签 truncate默认情况下转义字符串 但您可以使用将其关闭 escape option description truncate post content separator
  • 是否可以为简单的类创建表单

    我只是希望能够编辑不是 ActiveRecord 类的后继类的类属性 这是我的类 app model entry rb class Entry attr accessor title body end 这是一个控制器 class Diary
  • 惰性 IO - 字符串未被垃圾收集?

    我目前正在尝试将 XML 文件的内容读入Map Int Map Int String 而且效果很好 使用 HaXml 但是 我对程序的内存消耗不满意 问题似乎是垃圾收集 这是我用来读取 XML 文件的代码 type TextFile Map
  • Spring Cloud Docker - 配置服务器无法获取属性文件作为文件后端的使用

    我在获取全部内容时遇到问题特性文件来自配置服务器 in my 春季云示例 我已经和它一起工作过Docker 我只获取了 4 个属性文件 广告服务 用户服务 API网关 报表服务 而其他属性文件 eureka服务器和管理服务 无法从配置服务器
  • 如果满足条件,如何将值添加到上一行

    我想做的是 如果 b 列中的一行等于 2 那么我想将 3 添加到 a 列中前一行的值 如果不满足条件 那么我不希望更改前一行的值 然而 当我尝试此代码时 R 正在添加到后续行 我用什么替换 1 行引用并不重要 它总是添加到后续行 df a
  • 在没有自定义 ListView 的 ListActivity 中使用 setDivider 更改分隔线?

    我似乎无法使用我定义的 Drawable 获得自定义分隔线 以便在使用ListActivity并且不创建自定义ListView 这几乎就像虚拟机创建自己的ListView对我来说 与ListActivity 它使用提供默认分隔线的主题 如果
  • 如何在 VS Code 中编辑现有的 azure 函数

    到目前为止 在我发现的有关使用 Visual Studio 代码的 Azure 函数的所有教程中 它们都是关于创建和部署的 我只是想知道如何在 VS Code 中打开现有的 azure 函数 修改它并重新部署它 那可能吗 I can ope
  • 可以使 ctag 遵循 #include 指令吗?

    我正在尝试在我的 Makefile 中创建一个目标来自动创建tags使用 ctags 文件 我有一个源文件列表 cpp 文件 但我没有所有头文件的列表 我使用g MM创建标头依赖项列表 我本以为 ctags 会遵循任何 include生成标
  • 如何通过参考id获取主题

    我需要从主题中提取默认值 但不是从当前主题中提取 我知道我可以从当前主题中获取属性 如下所示 TypedValue typedValue new TypedValue Theme currentTheme context getTheme
  • 单击由 div 使用 JavaScript 制作的按钮?

    在 Google 中 用于发表评论的按钮是由 div 制成的 div class d s r tk3N6e e tk3N6e e qc Post comment div 我想我可以点击它 document getElementById 1v
  • assertRaises 失败,即使可调用也会引发所需的异常(python,unittest)

    我有以下测试代码检查函数中引发的异常 我希望测试能够通过 但是却显示失败 这是测试代码 import unittest define a user defined exception class MyException Exception
  • 在 Android 上使用 SQLite 的 AUTOINCREMENT 的开销是多少?

    在 SQLite 文档中 它包括以下内容 AUTOINCRMENT 关键字会施加额外的 CPU 内存 磁盘空间和 磁盘 I O 开销 如果不是严格需要的话应该避免 这是 通常不需要 and AUTOINCRMENT 关键字实现的行为巧妙地