<< 前のエントリトップページ次のエントリ >>
2011年08月23日

やっぱりDBがらみかぁ〜

アプリで色々な所の処理時間計ったところ
DBで3万5千レコード以上のテーブル「ComiketCircle」が
絡んでいる所で時間が、かかってるのが確認できた(=д=;)

実際の処理結果では、

「ComiketCircle」参照有り

long start = System.currentTimeMillis();

//エリア情報を配列にする
String sql = "select db2.* from ComiketCircle as db1" +
" left join ComiketBlock as db2 on db1.blockId = db2.id" +
" where db1.day = " + (date_i + 1) +
" GROUP BY db2.id" +
" order by db2.id";

//エリア情報を取得するSQL実行
Cursor c1 = db.rawQuery(sql, null);

for_count = c1.getCount(); //2011.08.22 追加 メモ:高速化対策

c1.moveToFirst(); //先頭に移動
//配列にブロックIDとブロック名セット
//for( i = 0 ; i < c1.getCount();i++){
for( i = 0 ; i < for_count;i++){
block_id_list.add(c1.getInt(1)); //id INTEGER not null, -- ブロックID
block_name_list.add(c1.getString(2)); //name CHAR(2), -- ブロック名

c1.moveToNext();
}

c1.close();
c1 = null; //2011.08.22 追加

long stop = System.currentTimeMillis();

Log.i("DB_time_cat1", (stop - start )+"ms");

上記の実行ログ
08-23 09:35:07.155: INFO/DB_time_cat1(5158): 10809ms

-------------------------------------------------------
「ComiketCircle」参照無し

long start = System.currentTimeMillis();
String sql = "select db1.* from ComiketBlock as db1";

//エリア情報を取得するSQL実行
Cursor c1 = db.rawQuery(sql, null);

for_count = c1.getCount(); //2011.08.22 追加 メモ:高速化対策

c1.moveToFirst(); //先頭に移動
//配列にブロックIDとブロック名セット
//for( i = 0 ; i < c1.getCount();i++){
for( i = 0 ; i < for_count;i++){
block_id_list.add(c1.getInt(1)); //id INTEGER not null, -- ブロックID
block_name_list.add(c1.getString(2)); //name CHAR(2), -- ブロック名

c1.moveToNext();
}

c1.close();
c1 = null; //2011.08.22 追加

long stop = System.currentTimeMillis();

Log.i("DB_time_cat1", (stop - start )+"ms");

上記の実行ログ
08-23 09:30:12.335: INFO/DB_time_cat1(4983): 17ms


スピナー用に配列にセットする処理しているのだが
処理時間は10809msと17ms。。。。何倍だ?w

ふむ、色々試してみたが元レコードの件数が多いと
レスポンスが落ちるねぇ(^^;)
さてさて、どうしたものかぁ
また調べるかぁ〜〜

しかし、だんだんロジック記述が煩雑になって来たなぁ〜〜〜っと

投稿者:秀at 22:14| さんでープログラム(Android編) | コメント(0) | トラックバック(0)

◆この記事へのトラックバックURL:

http://control.onair-blog.jp/util/tb.php?us_no=1924&bl_id=1924&et_id=189318

◆この記事へのコメント:

※必須