DBFluteが遅くて使えないって言ってる奴はプログラムとか仕様とか見直せよバーカw

結合テスト段階でデータ量を増やすと
「登録・更新・削除が遅い。DBFluteは使えない」って言われて怒りそうになった(;^ω^)

まぁ僕も大人なので頭の悪い可哀想な人相手に教えてあげたゎ(´・ω・`)

①複数件の登録・更新・削除の場合はbatchInsert、batchUpdate、batchDeleteを使え
通常のデータを登録しようとし、
for (Bean bean : list) {
 Hoge hoge = new Hoge();
 hoge.setId(bean.getId());
 hoge.setNm(bean.getNm);
 hogeBhv.insert(hoge);
}

とやるとローカルで100万件のデータに対して約60秒かかったΣ(´∀`;)

だがしかし
List<Hoge> hogeList = new ArrayList<>();
for (Bean bean : list) {
 Hoge hoge = new Hoge();
 hoge.setId(bean.getId());
 hoge.setNm(bean.getNm);
 hogeList.add(hoge);
}
hogeBhv.insert(hogeList);

でやると、1秒ぐらいかかった(;^ω^)

結果 → ソース改修


②排他制御をしないなら queryUpdate queryDelete を使え。
List<Hoge> hogeList = hogeBhv.selectList(cb);
hogeBhv.batchDelete(hogeList);

ってあるだろ?これの処理を日本語にすると
1,検索条件からDBにSELECT文を投げる
2,SELECTの結果をEntityに詰める
3,ヒットしたデータの削除

つまり2回(以上?)DBに接続していることになる。

これをqueryDeleteに直すと
hogeBhv.queryDelete(cb);

この1行でおkなのだ(´・ω・`)
日本語に直すと

1、検索条件にヒットするデータをDELETEする

とDB接続回数も1回なのでこちらを使用しろよな( ゚д゚ )


つーか19歳の時からDBFlute使ってる俺に対してDBFluteの文句言うんじゃねーよばー(ry

0 件のコメント:

コメントを投稿