No.1
- 回答日時:
普通はORDER BYで処理したい順に並べるので、順方向に1回だけ参照する場合が多いでしょう。
そうなると、レコードセットの情報を参照するのは1回限りで、変数に記録する必然性は乏しくなります。
配列に記録するにしても一度はレコードセットを操作する訳ですから、レコード数が少なく、
ランダムにレコード位置を移動し、繰り返し参照する場合を除き、配列に情報を蓄える意味は
無いように感じられます。どういう使い方を想定しているのでしょう?
この回答への補足
回答ありがとうございます。
使い方を説明しますと、レコードセットを3つ用意し、そこにテーブル3つからデータを取得し、1つ1つのレコードセットに格納していきます。
3つのレコードセットの内、1つは2回、2つは1回のループでの情報参照をします。
2回情報参照をする点と3つのレコードセットを使う点から、配列への代入についての質問をしました。
No.2
- 回答日時:
同じテーブルの内容を複数回参照するのであれば、配列を使ってメモリに
保持した方が速くなる「可能性もあります」。
なぜ「可能性」かというと、
・保持する内容数(レコード数)があまり多いと、再度参照する際の
検索自体に時間が掛かる可能性がある
・メモリを食う
…からです。
あと、VB6の場合は、配列を静的に確保するのであれば、モジュール単位で
確保できるメモリの総量が64kまでなのも考慮に入れる必要があります。
たぶん、私の個人的感覚から言えば、レコード数が3桁~4桁程度の
オーダーなら、配列に保持した方が速くなる可能性も大きいですかね。
ただ、2回程度の検索だと、あまり実感が湧かないかもしれません。
汎用マスタ系データのような、少ないレコードを何回も繰り返し検索する
ものの場合は、特にバッチ処理なんかでは劇的に効きます。
VB.NETだと、DataSetを使用してメモリ内でFindメソッドで検索したら
ハッシュアルゴリズム(これ自体は私はわからない)での高速検索を
自動で行ってくれるので、よほどレコード数が多くなければお勧めなんですけどねぇ。
No.3ベストアンサー
- 回答日時:
レコードセット内を検索するのは場合によっては「もの凄く」時間のかかる処理になります。
(DBシステムによる)と言って、レコード数(データ量)が多いとメモリオーバヘッドが気になります。
テーブル間の相互参照ならJOINするのが本筋で、経験から言うと、90%はSQLで対処可能(何度もループしないでよい)です。
あと、どうしてもというならストアドプロシージャを使うのも一法です。
No.4
- 回答日時:
No.2です。
いろいろ書いておいてアレなんですが、確かにNo.3の方がおっしゃる通り、
結合や副問合せ等で表現できる処理であれば、それが一番確実で
速い方法になると思います。
全てサーバ任せになり、余計なネットワーク負荷とかも無くなりますしね。
ただ、属するDatabase自体が異なるテーブルは(やろうとした事すらありませんが)
結合は「たぶん」出来ないでしょうし、1つのSQL文で表現できない場合も
無くは無いと思いますので、メモリに保持するのも全く使えない手では
無いかもしれません。
まぁ、複雑な処理でも、Transact-SQLとか使えばサーバサイドで
全部処理できるかもしれませんが…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- JavaScript オブジェクト配列の各メンバを任意の式で評価して、その評価値が最大のオブジェクトを返す関数はありますか 2 2023/05/20 15:02
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- JavaScript オブジェクトから任意のプロパティを全て抽出する一番簡単な方法 1 2023/08/09 21:13
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
構造体配列の一部初期化!!!
-
VB6で、一次元配列と二次元配列...
-
VBAでMODE関数をつくる
-
VB.NETの配列とArrayListについ...
-
Excel2010のinputboxで複数デー...
-
C#でbyte配列から画像を表示さ...
-
定数配列の書き方
-
配列数とメモリの使用率
-
C#,繰り返し処理での最大値の取...
-
母親の血液中の胎盤遺伝
-
配列の要素がすべてカラかどう...
-
VB6でやると構造体の配列になる...
-
2次元配列の初期値
-
現在コピーされているものによ...
-
VBA Dowhile 判断条件に動的配...
-
VBA ReDim と ReDim Preserve ...
-
ACCESSであえてデータを配列形...
-
レコードセットの中身を配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報