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

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

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

You are not logged in.

Announcement

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


#1 2021-01-12 18:28:22

ゲスト
Guest

1対多のテーブル構造における関連先フィールドを使用した検索

開発環境
iOS 10.15.5のCatalina
FileMaker Pro19

1対多のテーブル構造で関連先フィールドの情報を元に検索を行いたいのですが、検索条件に関連フィールドを使用すると検索の速度が遅くなるので、関連フィールドを検索条件に含めず、検索を行いたいです。

何かいい方法があれば教えていただきたいです。

例:見積を作成するファイルにて、見積の明細に商品Aが含まれる見積のみ表示したい

#2 2021-01-12 19:53:07

Moz
Member

Re: 1対多のテーブル構造における関連先フィールドを使用した検索

明細のテーブルで「商品A」を検索して、
[関連レコードへ移動]で「見積」のレコードを表示します。
「関連レコードのみを表示」(現在の対象レコードの内のすべてのレコードを照合)

関連レコードのフィールドを検索したら必ず遅くなるわけではないので、
レコード数によっては「見積」からポータルに表示された「明細」を検索しても大丈夫ですよ。

例えば先に日付などで絞っておいて[対象レコードの絞り込み]をするなど。

iOS に Catalina はありませんネ。

Offline

#3 2021-01-13 09:52:10

ゲスト
Guest

Re: 1対多のテーブル構造における関連先フィールドを使用した検索

ご回答ありがとうございます。

ある程度レコードを絞った状態から関連フィールドの検索を行おうと思います。
一回で検索してしまうことしか頭になかったので、大変参考になりました!ありがとうございます。

後iOSではなくmacでした誤情報すみません。

#4 2021-01-13 11:06:06

Shin
Member

Re: 1対多のテーブル構造における関連先フィールドを使用した検索

> 検索条件に関連フィールドを使用すると検索の速度が遅くなるので、関連フィールドを検索条件に含めず、検索を行いたいです。
実際に遅くなりましたか?
手元のファイルで、表示テーブル1万件、関連レコード1.5万件で関連レコードの日付範囲で検索しましたが、ヒットが200件ほどで、100mSecほどです。(オンプレミスのFMS運用)
検索対象に索引を持っていないフィールドが含まれると、検索は格段に遅くなります。こちらの要因なのでは。

Offline

#5 2021-01-13 15:31:32

ゲスト
Guest

Re: 1対多のテーブル構造における関連先フィールドを使用した検索

Shinさん、ご回答ありがとうございます。

遅くなるのは確認しております。検索実行のスクリプトステップが走った瞬間にクエリー処理のダイアログが表示されてしまいます。

>検索対象に索引を持っていないフィールドが含まれると、検索は格段に遅くなります。
確認したところ検索条件に使用している関連フィールドは索引設定済(すべて)でした。(考えていなかったことではあったので参考になりました、ありがとうございます!)

僕が見てるファイルは表示テーブル5万件、関連レコード70万件なのでかなりの数のレコードがあります、、

#6 2021-01-13 15:54:58

Shin
Member

Re: 1対多のテーブル構造における関連先フィールドを使用した検索

起動直後から同じ検索を2回続けて行うとどうですか。
その時間差は、サーバーから索引を転送する時間ですので、レコードを絞ったとしてもそれ以上の時間短縮にはなりません。

ちなみに、手元のファイルで、対象テーブルは約1万レコード、関連テーブルが8万レコードで、ポータル内のテキストフィールドの一致検索で、初回は320mSec、2回目以降は300mSecで検索できます。20mSecで索引が転送されたと考えていいと思います。それが関連テーブルのレコード数と検索するフィールド数を乗じたものに比例すると考えられますが、ただ、レコード数と索引の大きさは単なる比例ではなく階数的に増えるようですので、レコード数が数倍になると数十倍の大きさになっているかもしれません。
検索が非常に遅い、ということでしたら、Mozさんが提案されている方法の変形で、サーバーサイドで関連テーブル側の検索を行い、その結果(多分顧客IDのリスト)をクライアント側で取得し、そのリストで手元の顧客リストを絞りこむといいのかもしれません。

索引の取得に時間がかかっている場合、ファイルを、最小化コピーしたものと入れ替えると劇的に早くなることがありますので、是非お試しを。

Last edited by Shin (2021-01-14 16:24:24)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 8 queries executed - Memory usage: 513.28 KiB (Peak: 517.82 KiB) ]