SQLite 实施不佳?第一次数据访问速度太慢

2024-01-23

我是 Android 编程新手,但我很习惯使用 SQLite 数据库。

  • 我的应用程序在 SD 卡上打开一个 SQLite3 数据库,并使用以下命令运行相对复杂的查询(5 个联接、1 个子查询、2 个 where 子句)SQLiteDatabase.rawQuery

    public Cursor queryDataBase(String sql, String[] selectionArgs){
        Cursor c = myDB.rawQuery(sql, selectionArgs);
        return c;
    }
    
  • SQL 语句由硬编码给出String.

  • 该查询返回 585 行 24 列。
  • 我必须在存储空间和索引之间进行权衡,但在所有较大的表(目前大约有 40 000 个条目)上都使用索引,SQLite 显示查询:Steps: 155 , Sorts: 0, AutoIdx: 1077
  • 我没有使用主键,因此我也没有将任何内容重命名为“_id”。

  • rawQuery的执行速度比较快,执行时间约为2 ms.

  • 访问这些数据需要花费太多时间,例如通过c.moveToFirst(),执行时间约为1700 ms!

rawQuery的执行速度比较快,执行时间在2ms左右。

访问这些数据需要花费太多时间,例如通过c.moveToFirst(),执行时间约为1700毫秒! (与 Cursor.getRowCount() 相同,或者显然是第一次访问实际结果集)。

这就是关键:rawQuery 实际上并不执行查询,而是延迟到第一次需要使用查询结果时才执行。

Source: http://groups.google.com/group/android-developers/browse_thread/thread/c9277225f8dbc4d1/65de841f284f09e6?lnk=gst http://groups.google.com/group/android-developers/browse_thread/thread/c9277225f8dbc4d1/65de841f284f09e6?lnk=gst

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

SQLite 实施不佳?第一次数据访问速度太慢 的相关文章

  • FCM 通知 onclick 未打开所需的活动

    我已经尝试了这里发布的几乎所有解决方案以及每个标志的组合 但它不起作用 以下是我遇到问题的用例 1 当我在申请时FCM通知打开我想要的活动 数据被传递到onNewIntent在主要活动中 当应用程序处于前台时它工作正常 2 当处于后台模式
  • 如何取消/取消订阅协程 Flow

    当我尝试提前取消流程时 我注意到一个奇怪的行为 看一下下面的例子 这是一个发出整数值的简单流程 private fun createFlow flow repeat 10000 emit it 然后我打电话给createFlow使用此代码的
  • 恐慌:缺少“x86”CPUS 的模拟器引擎程序

    我正在尝试运行我的第一个 Android Hello World 程序 但在这样做时 Android studio 给出了一个错误 以下是所有详细信息 IDE Android Studio 操作系统 OSX 版本 10 9 5 命令 Use
  • SQL 内连接两个具有相同列名的表

    我有两个表 其列数不同 我不知道有多少列或名称是什么 例如表 A 和表 B TableA ID B ID variable TableB ID variable Query SELECT TableA TableB FROM TableA
  • LoaderManager 不接受“这个”

    好吧 我投降 我想不明白 我正在学习 Udacity 的 Android 基础知识课程 需要了解如何使用加载器加载数据 但是 当我使用以下行时 this 以红色突出显示并显示以下错误 Wrong 3rd argument type Foun
  • 如何在gradle中执行jar文件?

    当我使用 ant 构建我的 android 项目时 我需要这样的任务
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • 连接到 Mac Mini 时设备经常失去连接

    我正在尝试在 MAC Mini 上开发 android 应用程序 并安装了所有必需的软件 如 android SDK eclipse 和 ADT 到目前为止 除了一件事之外 一切都运行良好 我正在通过 USB 连接 Google Nexus
  • Xamarin - 未找到类(Android 支持库)

    我正在尝试使用 AppCompat 实现具有向后兼容性的 Material Design 继tutorial https blog xamarin com android tips hello material design v7 appc
  • 注册到 gcm 时获取空设备 ID

    GCMRegistrar checkDevice this GCMRegistrar unregister this GCMRegistrar checkManifest this if GCMRegistrar isRegistered
  • 如何在Android中设置音频均衡器

    我正在制作一个媒体播放器 其中需要使用 搜索栏 将均衡器效果设置为 低音 可怕 摇滚 流行 中 我得到了一个链接 其中使用了一些 NDK 库来执行此操作 是否有任何 Java 库可以执行此操作 请解释执行此操作的逻辑是什么 Override
  • Android - 超链接不可点击

    我的应用程序中有一些链接 一个用于网站 一个用于电话号码 一个用于电子邮件 电子邮件和电话链接均有效且可点击 但由于某种原因 网站超链接仍然无法点击 有什么想法吗 代码如下
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • 在android中构建照片上传应用程序[重复]

    这个问题在这里已经有答案了 可能的重复 从活动中调用相机 捕获图像并上传到服务器 https stackoverflow com questions 10679571 calling camera from an activity capt
  • 以编程方式列出意图过滤器

    在 android Activity 中 有没有一种方法可以以编程方式列出它已注册的活动
  • 无法从新版 Google 相册应用中同时选择照片和视频

    Google 相册更新后 我无法同时选择视频和照片 如果我使用单个 视频 或 图像 意图 它会像平常一样工作 在视频 照片意图中 它忽略第二个参数 如果第一个是视频 它将是视频意图 如果它是照片 您将建议选择照片 Intent intent
  • 请求位置更新参数 android

    我对这个参数感到困惑 locationManager requestLocationUpdates provider 60000 10 listener 这是它的执行方式location update listener if time 60
  • 在 Back 上按遍历最后两个选项卡在 BottomNavigationView 中无法正常工作?

    单击后退按钮后 导航到上一个打开的选项卡 您只需遍历最后打开的两个选项卡即可退出应用程序 如何实现 我只想遍历我打开的所有选项卡 然后应用程序应该退出 这是布局
  • Toast.LENGTH_LONG 和 Toast.LENGTH_SHORT 的值是多少?

    我正在我的应用程序中打印 Toast 消息以显示通知 但我想知道 Toast LENGTH LONG 和 Toast LENGTH SHORT 我还可以使用哪些其他值 谁能告诉我这两个变量的值是多少 还有另一个问题可以回答您正在寻找的内容

随机推荐