2016-08-01 17 views
-1

私はうまく動作するアプリケーションを持っています。しかし、データベースへのクエリを最適化すれば、改善できると思う。そして私は提案が必要です。Sqlite Androidの最適化

これが私の "クエリを選択" の一部です:

private static final String SELECT = "SELECT " + 
     "dz.first_id AS first_id, " + 
     "dz._id AS _id, " + 
     "dz.att1 AS att1, " + 
     "dz.att2 AS att2, " + 
     "dz.att3 AS att3, " + 
     "dz.att4 AS att4, " + 
     "dz.att5 AS att5, " + 
     "d.var1 AS var1, " + 
     "d.name AS name, " + 
     "d.last_update AS last_update, " + 
     "d.image_url AS image_url, " + 
     "d.image_highlighted_url AS image_highlighted_url, " + 
     "d.var2 AS var2, " + 
     "d.type AS type, " + 
     "d.state AS state, " + 
     "d.sync AS sync, " + 
     "d.var3 AS var3 " + 
     "FROM table1 dz INNER JOIN table2 d " + 
     "ON d._id = dz.first_id "; 

Cursor result = conn.rawQuery(SELECT, null); 

* table1table2は簡単な作成を持っている:一つだけ_id integer PRIMARY KEY AUTOINCREMENT NOT NULL

ビューを使用すると便利ですか!他の提案はありますか?

ありがとうございました。

+0

クエリの最適化をお探しですか?具体的にする。また、あなたのテーブルスキーマを投稿できますか? – bpachev

+1

WHEREとJOINを索引付けすることは救命救助者です。しかし、文字列の連結の代わりにStringBuildersを使用することもできます。 –

+0

質問の最適化を探しています。はい。テーブルの作成はシンプルで、1つの_id整数のみですPRIMARY KEY AUTOINCREMENT NOT NULL –

答えて

2

このクエリは切り詰めて乾燥しているように見えますが、あなたの選択肢は実際には、選択した列から何らかの不必要な列を残しておくか、あるいはdz.first_idとd.idインデックスが設定されている。おそらく、次のようにdzにインデックスを追加してください。

+1

このクエリがなければ、DBは 'table1'をスキャンし、別のインデックスを使用するよりも速いrowid(' _id')を使って 'table2'の中の一致する行を検索します。 –

関連する問題