【问题标题】:Android sqlite index on android 2.3android 2.3 上的 Android sqlite 索引
【发布时间】:2012-03-22 15:21:29
【问题描述】:

我有两台设备:装有 Android 2.2 Froyo 的 HTC Desire 和装有 Android 2.3 Gingerbread 的 HTC Evo 3D。

我的sql请求:

SELECT DISTINCT Album.titre, Serie.nbAlbum 
  FROM Serie, Album 
  WHERE Serie.titre=Album.serieTitre AND Album.shz=1 

使用非索引数据库:

htc evo 3d : Everything works fine, the query runs in ~1 second.
htc desire : This is much longer! about 30 - 50 seconds.

所以,我尝试使用以下方法索引我的表:

CREATE INDEX IDX_ALBUM_SHZ on ALBUM (shz)
CREATE INDEX IDX_ALBUM_SERIETITRE on ALBUM(serieTitre)

但结果却相反!

HTC Desire : Really fast, ~1 second.
HTC Evo 3d : Very slow, more than 20 seconds

你知道发生了什么吗?
froyo 和姜饼之间的 sqlite 管理方式是否发生了重大变化?

如何解决这个问题?

【问题讨论】:

    标签: android sqlite indexing android-2.2-froyo android-2.3-gingerbread


    【解决方案1】:

    这很可能与这些手机使用的文件系统有关。据我所知,大多数三星手机都使用 RFS 文件系统,这在磁盘访问时间性能方面一尘不染。 HTC手机大多使用ext3(据我所知)。我想不出你的情况有什么其他不同。

    【讨论】:

    • 文件系统会不会影响sqlite索引?这似乎很奇怪。此外,我可以在 Sony S tab、galaxy tab 10.1 和 ASUS transformers 3.2 中的任何一个上进行测试,无论有无索引,一切都运行良好。
    【解决方案2】:

    我认为这是由于 Android 版本的不同造成的。从 2.2 到 2.3,性能方面发生了很多变化。 我有 2 台设备用于开发:一台在 2.2.2 上运行,另一台在 2.3.3 上运行。性能差别很大。 最可能的原因是 2.3 在 ext4 文件系统上运行(froyo 在 YAFFS 上运行)而且速度更快)

    【讨论】:

    • 即便如此,在我的情况下,使用索引,froyo 比姜饼快得多
    【解决方案3】:

    如果没有解决方案,我通过在数据库创建/导入时简单检查版本来解决我的问题,并相应地添加/删除索引。

    但是,我仍然对更聪明的人持开放态度!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2012-10-28
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多