みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
売上の集計などやることを考えた時、レコード数的にはどの程度が限界なのでしょうか?
売上を入力し、年ごと月、取引先ごとの集計をする場合です
ある一定の年数でバックアップをとり、新規ファイルとしてレコードを全削除していくのが現実的なのでしょうか?
10年前の売上レコードなどは即時的には不要なので、集計などの動作を軽くするにはマスタ以外のトランザクション?というのでしょうか?
そのようなレコードを削除した新しいレコードをつくる、ということです
最近のPCならレコード1件のファイルも、100万件のファイルも、集計や各種計算をする程度なら誤差の範囲だよ、ということなら
そのまま使用すること前提でやろうと思います。
MS Accessのときはレコード数が多くなってくると、集計の遅さ、破損や動作の重さ、VBAのもたつきがありましたので
ファイルメーカーではどうなのかと、質問しまいた
Accessはとくに原因不明のファイル破損が多かったです
これはExcelでもよくあることなので、MS製品ではなにファイルメーカーではあまりないことなのかもしれません
Offline
計算式を、別計算の結果を参照などを行わないように作っていくと、100万件程度でもたつく事は無いです。
集計については、集計機能を使うとソートが絡みますので少し時間がかかります。リレーションを使った集計ですと早いですが、多用すると構造が少しだけ複雑になります。
ファイルの破損は、クラッシュが無い限り、ほとんど無いです。
Offline
つまり、ある計算を行ったフィールドを参照させるのではなく、
その計算結果などをスクリプトで数字として格納させたフィールドを参照させる仕組みにしたほうがいいということですか?
また、集計フィールドは使わずに、フラグや区分を駆使した
自己リレーションでの集計をやったほうがいいということでしょうか?
Offline
計算値を参照させる際には、索引の作成できるもの(保存できるもの)については、参照しても問題は少ないです。
索引の作成できないもので、特にリレーション先のフィールドを参照するものについては、どうしても遅くなる原因になります。また、その参照先が索引が作成できないものでしたら、と場合には、非常に遅くなります。最悪は再帰的に他のレコードの自フィールドを参照している場合には、スタックオーバーを起こし、計算不可になる場合もあります。
そのような場合には、参照が避けられない時には、Evaluate() などを使って保存するようにするとある程度回避できます。ただ、この処理を行うと、小さな規模の間は逆に遅くなる可能性があったり、不具合が見つけにくくなる事も多いので、検討が必要でしょう。
集計フィールドも、用途によっては非常に強力な武器です。100万レコードを区分ごとに集計する、という場面では、ソートキーに索引が作成されていてもソートにはまあまあ時間がかかります。それが数千程度でしたらほととんど瞬時ですので、例えば、月次集計を行なう際などでは有用でしょう。逆に、リレーションを使うと、数が増えてもそんなに遅くはならないのですが、構造が複雑化していきますので、その使い分けです。
Offline
Evaluate() などを使って保存する
というのはどういうことですか?
Offline
Evaluate() 関数は、その時点での値を評価して、固定した値として計算値を返します。ですから、原則的に他のフィールドを直接参照していないので、索引を持てる結果を返します。
フィールドを指定しておくと、そ他のフィールドの変更によって、計算式を再評価するオプションがありますので、普通の計算フィールドのように振舞ってくれます。(全く同じではないですが)
Offline
計算結果をスクリプトで別フィールドに保存するのとどちらがいいんでしょうか
大差はないでしょうか?管理しやすいほうでやればいいですか?
Offline
状況次第では。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 559.78 KiB (Peak: 579.48 KiB) ]