2

私は2つのデバイスを持っています:Android2.2Froyoを搭載したHTCDesireとAndroid2.3Gingerbreadを搭載したHTCEvo3Dです。

私の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

何が起こっているのか考えていますか?
フローズンヨーグルトとジンジャーブレッドの間でsqliteの管理方法に大きな変更がありましたか?

この問題を解決する方法は?

4

3 に答える 3

0

これはおそらく、それらの電話が使用しているファイルシステムに関連しています。私の知る限り、ほとんどのSamsung電話はRFSファイルシステムを使用しています。RFSファイルシステムは、ディスクアクセス時間のパフォーマンスの面でほこりをなめます。そして、HTC電話は主にext3を使用しています(私が知る限り)。あなたの場合、他の違いは考えられません。

于 2012-03-22T17:50:19.260 に答える
0

これはAndroidのバージョンの違いによるものだと思います。2.2から2.3まで、パフォーマンスに関する多くの変更がありました。開発用のデバイスが2つあります。1つは2.2.2で実行され、もう1つは2.3.3で実行されます。パフォーマンスは大きく異なります。最も可能性の高い原因は、2.3がext4ファイルシステムで実行され(froyoはYAFFSで実行されます)、それがちょうど速いことです)

于 2012-03-23T06:11:55.203 に答える
0

解決策がない場合は、データベースの作成/インポート時にバージョンを簡単にチェックし、それに応じてインデックスを追加/削除することで問題を解決しました。

しかし、私はより賢い人にオープンなままです!

于 2012-03-30T10:18:47.893 に答える