喫茶XRAYトップページ

[スレッド全体
]

[6897] Re4: 時間短縮したいとお望みの貴兄に返信 削除
2013/4/22 (月) 19:34:49 Syake
▼ Mr.XRAYさん
> でも,掲示板等で,ほんとにたまにですがあるんだもん.もん.

いずれにしても、アクセス時間で相当の時間がかかると思われますので
根本的解決はアクセスにかかる時間を減らすことだと思います。
TStringGridなら先ほどのTDBXReaderで速度アップは可能かと。
お手軽なTDBGridでも可能ですが、内部処理が二度手間になるので処理時間
は多少長くなるかもしれません。多分。
但し条件としてはdbExpressが使用できる環境で無いとTDBReaderは使用
できませんので、Enterprise以上が必要です。

少なくとも記載した時間分は早くなるかな!?(43秒→4.4秒)

uses
  Data.DB,  Data.SqlExpr, Data.DBXCommon;

procedure XXXXXX.LoadData();
var
  Comm :TDBXCommand;
  Reader :TDBXReader;//前方向専用リーダーです。
begin
  //TSQLConnection(SQLConnection1)貼付け!?済として
  Comm := SQLConnection1.DBXConnection.CreateCommand;
  try
    Comm.Text := 'SELECT文';
    Reader := Comm.ExecuteQuery;
    if Assigned(Reader) then
    begin
   try
    //レコードが空だと最初からループしませんので、レコード有無の判定は不要です.
        //TStringGridへの書込みは以下の処理をどうぞ
    while Reader.Next do
        begin
          {
     フィールドデータを呼出すにはValueを使う。
     Reader.Value[].AsString; 等
     []内はフィールド名か配列値でフィールドを指定
     するが、当然配列値を指定した方が早いです。
     キャストするときInteger型はDataSet時と指定が
     若干異なりますが問題なしです。
     なので、後はDataSetと同じ感覚でどうぞ。
     }
        end;

        //CopyReaderToClientDataSet(Reader,ClientDataSet);
        {このメソッドで、TDBXReaderからClaientDataSetへ
     データを一括して渡す事もできます。
     なので、こちらでTDBGridも使えます。
     もちろん呼出すレコードに比してそのメソッドの
     処理時間はかかりますけど。}
      finally
        Reader.Free;
      end;
    end;
  finally
    Comm.Free;
  end;
end;

これで、とっても早く処理ができます。多分。
但しDB2ではUnicodeが使えません。

[6898] Re5: 時間短縮したいとお望みの貴兄に返信 削除
2013/4/22 (月) 20:39:11 Mr.XRAY
▼ Syakeさん,サンクスです.

> var
>   Comm :TDBXCommand;
>   Reader :TDBXReader;//前方向専用リーダーです。


こんなもん知りませんでした.
後で,ここを検索する時のために,高速,速く,テータを読み込むには
と書いておこうっと.
あっ,DEKO さんとこにも書いておうかな.


[6900] 大量のデータの読み込みと表示返信 削除
2013/4/22 (月) 20:50:22 Mr.XRAY
> 後で,ここを検索する時のために,高速,速く,テータを読み込むには

高速,データ表示で思い出したんですが,
テキストの読み込みに時間がかかる,という質問もみたことがあります.
何と,1 GB のテキストファイルというのがありました.
今,検索してみましたが,検索語句が適当でないらしく,見つかりせんが.

TStringList や TStream 関係で読み込んでも,おそらく全てを読み込むことは
できないでしょうね.32 ビットアプリでは.
32 ビットアプリでは,1 プロセスが使えるメモリは 2 GB バイトです.
でも,2 GB バイト全てが使えるわけではありません.
しかも,TStream 関係を使っても,その内部の処理でメモリ使いますから.

これも,個人的には疑問があります.
そんなに大きいテキストファイルを読み込むという必要性です.
世の中,私の知らない要望があるもんです.

実際問題として,データの読み込みよりも,表示用のコントロールに
表示する,描画に時間がかかるのが問題点なのかも知れません.


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