2

我有两个设备:带有 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 是否发生了重大变化?

如何解决这个问题呢?

4

3 回答 3

0

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

于 2012-03-23T06:11:55.203 回答
0

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

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

于 2012-03-30T10:18:47.893 回答
0

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

于 2012-03-22T17:50:19.260 回答