喫茶XRAYトップページ

[スレッド全体
]

[2615] データベースプログラミング高速化計画2返信 削除
2009/9/8 (火) 08:35:30 Sayke
何を今更・・・と言われると身も蓋も無いのですが。

一意のデータベースのテーブルからデータを読み取って、
同一のデータベースの別テーブルにデータを書き込むとし
ます。

A)コネクション(TADOConnection)を一つ生成して
  データの読込み及び更新を行う
B)コネクション(TADOConnection)を二つ生成して
  便宜上一方を読み込み用、一方を更新用として
  行う

ADODataSet.Connection := ADOConnection1;
{--(略)----}
while not ADODataSet.Eof do
begin
  {---データ加工処理(略)----}
  //Aの場合
 ADOConnection1.Execute('INSERT文');
  //Bの場合
  ADOConnection2.Execute('INSERT文');
end;

何事も無い処理ですが・・・
11万レコードを処理します。

A)の場合 Av.19分38秒
B)の場合 Av. 2分16秒 \(^o^)/

これはある作業中偶然判明したことなのですが、自身
何故Bの場合が早いのか良くわからんのです。

まあ、結果オーライトと言うことで。


[2621] Re:データベースプログラミング高速化計画2返信 削除
2009/9/13 (日) 00:10:02 Mr.XRAY
▼ Saykeさん

> 何を今更・・・と言われると身も蓋も無いのですが。

これは意識したことはないのですが...
コネクション(TADOConnection)を1つで使い回すこともしますが,
接続ごと(読み,書きは別)に使用することが多いです.
(サンプルプログラム集では違うのがあるかも知れません)

でもすごい差ですよね.
キャッシャとか,確保するメモリ領域の違いでしょうか.
でも,機能ごとに分けた方が,コードの可読性もいいとも考えます.

今は,XPやVista搭載のマシンでは,あまり消費メモリ量も意識する
必要がないので,その方がいいですね.

コーディングによって処理速度に違いがでるいい例ですね.
ういうノウハウは中々発見できないものです.
業務アプリと言えばデータベースは切り離せません.速度は命?
非常に参考になりました.サンクスです.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82