初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-12-15 23:27:31

YUYA
Member

レコード数と動作、破損について

売上の集計などやることを考えた時、レコード数的にはどの程度が限界なのでしょうか?
売上を入力し、年ごと月、取引先ごとの集計をする場合です

ある一定の年数でバックアップをとり、新規ファイルとしてレコードを全削除していくのが現実的なのでしょうか?
10年前の売上レコードなどは即時的には不要なので、集計などの動作を軽くするにはマスタ以外のトランザクション?というのでしょうか?
そのようなレコードを削除した新しいレコードをつくる、ということです

最近のPCならレコード1件のファイルも、100万件のファイルも、集計や各種計算をする程度なら誤差の範囲だよ、ということなら
そのまま使用すること前提でやろうと思います。
MS Accessのときはレコード数が多くなってくると、集計の遅さ、破損や動作の重さ、VBAのもたつきがありましたので
ファイルメーカーではどうなのかと、質問しまいた

Accessはとくに原因不明のファイル破損が多かったです
これはExcelでもよくあることなので、MS製品ではなにファイルメーカーではあまりないことなのかもしれません

Offline

#2 2017-12-16 00:32:42

Shin
Member

Re: レコード数と動作、破損について

計算式を、別計算の結果を参照などを行わないように作っていくと、100万件程度でもたつく事は無いです。
集計については、集計機能を使うとソートが絡みますので少し時間がかかります。リレーションを使った集計ですと早いですが、多用すると構造が少しだけ複雑になります。
ファイルの破損は、クラッシュが無い限り、ほとんど無いです。

Offline

#3 2017-12-16 00:54:25

YUYA
Member

Re: レコード数と動作、破損について

つまり、ある計算を行ったフィールドを参照させるのではなく、
その計算結果などをスクリプトで数字として格納させたフィールドを参照させる仕組みにしたほうがいいということですか?

また、集計フィールドは使わずに、フラグや区分を駆使した
自己リレーションでの集計をやったほうがいいということでしょうか?

Offline

#4 2017-12-16 09:03:14

Shin
Member

Re: レコード数と動作、破損について

計算値を参照させる際には、索引の作成できるもの(保存できるもの)については、参照しても問題は少ないです。
索引の作成できないもので、特にリレーション先のフィールドを参照するものについては、どうしても遅くなる原因になります。また、その参照先が索引が作成できないものでしたら、と場合には、非常に遅くなります。最悪は再帰的に他のレコードの自フィールドを参照している場合には、スタックオーバーを起こし、計算不可になる場合もあります。
そのような場合には、参照が避けられない時には、Evaluate() などを使って保存するようにするとある程度回避できます。ただ、この処理を行うと、小さな規模の間は逆に遅くなる可能性があったり、不具合が見つけにくくなる事も多いので、検討が必要でしょう。
集計フィールドも、用途によっては非常に強力な武器です。100万レコードを区分ごとに集計する、という場面では、ソートキーに索引が作成されていてもソートにはまあまあ時間がかかります。それが数千程度でしたらほととんど瞬時ですので、例えば、月次集計を行なう際などでは有用でしょう。逆に、リレーションを使うと、数が増えてもそんなに遅くはならないのですが、構造が複雑化していきますので、その使い分けです。

Offline

#5 2017-12-16 16:47:44

YUYA
Member

Re: レコード数と動作、破損について

Evaluate() などを使って保存する
というのはどういうことですか?

Offline

#6 2017-12-16 16:56:35

Shin
Member

Re: レコード数と動作、破損について

Evaluate() 関数は、その時点での値を評価して、固定した値として計算値を返します。ですから、原則的に他のフィールドを直接参照していないので、索引を持てる結果を返します。
フィールドを指定しておくと、そ他のフィールドの変更によって、計算式を再評価するオプションがありますので、普通の計算フィールドのように振舞ってくれます。(全く同じではないですが)

Offline

#7 2017-12-16 19:00:03

YUYA
Member

Re: レコード数と動作、破損について

計算結果をスクリプトで別フィールドに保存するのとどちらがいいんでしょうか
大差はないでしょうか?管理しやすいほうでやればいいですか?

Offline

#8 2017-12-16 23:31:26

Shin
Member

Re: レコード数と動作、破損について

状況次第では。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 559.79 KiB (Peak: 579.49 KiB) ]