過去の桐井戸端BBS (桐ver.9)
27036 表ファイルの容量を軽くするため方法として表整理のほかにあるのでしょうか 野崎 2004/07/14-14:57
こんにちは、いつもお世話になっています。
どなたか教えて下さい。

フォームを利用して、絞り込みを,並べ替え,置換等をしています。
そうすると、だんだん処理に時間がかかってきます。

それで、フォームの中に、
表整理コマンドボタンでも作成しようかと思っていますが、他に、いい方法はないでしょうか?
表の容量を軽くする方法を表整理以外知らないのです…。
(因みに、表のデータは23万件ほどです。)
27040 Re:ファイルの容量 佐田 守弘 2004/07/15-00:17
記事番号27036へのコメント
野崎さん
まず最初に確認したいのですが、
 >そうすると、だんだん処理に時間がかかってきます。
の「だんだん処理に時間がかかる」をもう少し詳しく教えて下さい。
つまり、
1)同じデータで、絞り込みを何段も行ったり、絞り込み状態で並べ替えをすと遅くなる。
2)データの件数が増えるにしたがって、遅くなってゆく
のどちらの意味でしょうか。

●表整理
削除行が残っていて、ファイルサイズが肥大している場合には、その削除行が不要であるなら表整理を行うべきでしょう。

●アンドゥ機能を使わない。
通常は、処理をやりなおせる様にアンドゥ機能が有効になっています。
アンドゥ機能を使うと、元の状態に戻すために、例えば置換前のデータを残しておくといった様に、処理中にデータが肥大します。
(表整理したり、終了すれば元のサイズに戻る様ですが)
アンドゥを無効にすれば、処理中のデータの肥大化が防げますし、ファイルサイズも小さくなる様です。

その代わり、誤った処理のやり直しができなくなります。
バックアップありの場合には、破棄終了で編集前の状態に戻せます。バックアップなしの時には、
自分でバックアップコピーを別のフォルダかドライブに残しておき、これを書き戻します。

●索引を使う
絞り込みと並べ替えの時間を短縮するのには、索引を使うのが効果的です。
絞り込みや並べ替えには、劇的な効果があります。
ただし、索引があっても完全一致又は前方一致でないと機能しません。
置換の場合には、処理時間の短縮にはなりません。
索引項目を置換すると、索引を設定していない時よりも時間が掛るかと思います。

●表を小さくする
27041 Re:ファイルの容量 佐田 守弘 2004/07/15-00:23
記事番号27040へのコメント
誤って途中で投稿してしまいましたので、続きを書きます。

●正規化で表を小さくする
表の枠組み、つまり項目の作り方は適切でしょうか。
複数のレコードで同じ値が続く項目が存在するような表の場合、1つの表にするよりも、
複数の表に分けて正規化する事により、データの涼を縮小できます。
これを1つの表にまとめるのが結合です。
結合を行うためにある程度の処理時間は掛りますが、トータルとして軽くなる事も考えられます。

いずれにしても、実際に表を見たり、試してみないと何れが適切かの判断は難しいのですが、
以上に書きました方法をいろいろと試してみて下さい。

佐田守弘(KS-00119)
27044 Re:ファイルの容量 野崎 2004/07/15-10:51
記事番号27041へのコメント
佐田 守弘さん

>「だんだん処理に時間がかかる」をもう少し詳しく教えて下さい。
>1)同じデータで、絞り込みを何段も行ったり、絞り込み状態で並べ替えを
>すと遅くなる。
>2)データの件数が増えるにしたがって、遅くなってゆく
>のどちらの意味でしょうか。

1)です。データの件数は増えません。
また、表の項目数は10程度です。
ですから、
複数の表に分けて結合させてというところまではしなくていいと思いますので、

●アンドゥ機能を使わない。
●索引を使う

この2つの方法でやってみます。

いつも、懇切丁寧にありがとうごうざいます。

27046 Re:ファイルの容量 大野達郎 2004/07/15-12:50
記事番号27040へのコメント
いつもお世話になっております。
便乗質問なのですが、以下の件についてです。

>●アンドゥ機能を使わない。
>通常は、処理をやりなおせる様にアンドゥ機能が有効になっています。
>アンドゥ機能を使うと、元の状態に戻すために、例えば置換前のデータを
>残しておくといった様に、処理中にデータが肥大します。
>(表整理したり、終了すれば元のサイズに戻る様ですが)
>アンドゥを無効にすれば、処理中のデータの肥大化が防げますし、ファイル
>サイズも小さくなる様です。

現在、アンドゥ機能有効にて処理を行っております。
「終了すれば元のサイズに戻る」についてですが、
これは破棄終了のことでしょうか?
こちらの環境ですと保存終了するとデータ容量が肥大化していることがあります。
処理は40000レコード(全25項目)、10レコードの置換のみです。
削除行は処理前、処理後共にありません。
この場合ですと処理前28M→処理後200Mとなります。
表整理を行うとサイズが戻るのは分かっていましたので、
大量の置換を行う時には表整理をするようにしました。

最近までサイズが増大するのは削除行がある時だけだと思っていましたので、
置換でデータ容量が増加しているのは意外でした。
置換以外にもサイズが増加するケースは他にもあるのでしょうか?


27050 Re:ファイルの容量 佐田 守弘 2004/07/15-23:33
記事番号27046へのコメント
大野達郎さん
>「終了すれば元のサイズに戻る」についてですが、
>これは破棄終了のことでしょうか?
確かに保存終了すると、ファイルサイズは減らないですね。

実はこの現象について私も気がついたのは、比較的最近です。
少し前の過去ログに残っていると思いますが、
・専有と共有で保存するファイルサイズが異なる(共有の方が肥大化する)
・アンドゥありとなしでファイルサイズが異なる
という議論がありました。
この時にかなり大きな表を使って検証してみた結果、やはりその通りでした。
(私のテスト結果も書き込んであると思います)

その際に置換操作を試してみるとファイルサイズが大きくなっていることに気がつきました。
では置換を繰り返すと、どんどんと大きくなってゆくのかと言えば、そうではない様です。
実際にどの様になっているのかは分りませんが、置換を行うと、
丁度、ページ分割などで余白割合が増えた様な状態になると理解すればよいだろうと思います。
置換操作を行う

置換前のデータを一時残すためにファイルサイズが増えているのか、
あるいは、置換処理のためのデータ操作のために余白割合を増やしているのか、
断定はできないのですが、置換操作を行うとファイルサイズが大きくなります。

 >この場合ですと処理前28M→処理後200Mとなります。
私が3MB強のファイルで試した結果では、6MB弱までファイルサイズが大きくなりましたが、
それ以上は増えない様です。

ただし、置換前の余白割合の状態と、置換の内容によっては、ページ分割を生じる場合があります。
ページ分割が何回も起きると、当然ながらファイルサイズは大きくなるでしょう。

●置換以外に
 >置換以外にもサイズが増加するケースは他にもあるのでしょうか?
索引の作成と削除を繰り返すと、ファイルサイズは大きくなります。
おそらくは索引に使ったページが残っているためだろうと思います。
後は、冒頭に書いた共有であるかどうかが影響する様です。

佐田守弘(KS-00119)
27094 Re:ファイルの容量 大野達郎 2004/07/20-12:43
記事番号27050へのコメント
> 佐田 守弘さん

詳しいレスどうもありがとうございます。
索引の作成と削除の繰り返しでも容量は増えてしまうのですね。
勉強になります。
今後の作成にて気を付けておきたいと思います。
どうもありがとうございました。

戻る