みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ご質問失礼いたします。
こちらはFileMaker 13 server&advance&pro にて共有を行っておりipadにてgoも運用しております。
youtubeでK社様のGoが早くなるためにできることの動画を見ました。
ひとつひとつ実行しているところですがうまくいかない項目があります。
検索という動作です。
動画によると
goで検索するよりサーバー上での検索結果をクライアントに返した方が早いとのこと。
確かにサーバー上でスクリプトを実行して検索しても結果はサーバー上にあり
クライアントでその対象レコードを表示するには
変数を設定?
集計?
そのリレーションを張る?
そして関連レコードへ
と解説があるのですが知識不足で理解できません。
ご理解されている方いらっしゃいましたら詳しく教えて頂けないでしょうか。
よろしくお願いします。
確かにサーバー上でスクリプトを実行して検索しても結果はサーバー上にあり
クライアントでその対象レコードを表示するには
要点だけ。
1.変数は利用しなくてもできます。
2.集計フィールドの[一覧]を利用してプライマリキーの一覧フィールドを作成します。
3.グローバル格納のテキストフィールドとプライマリキーのフィールド間にリレーションを作成します。
[サーバー上のスクリプト実行]の結果にプライマリキーの一覧フィールドを指定します。
検索結果 = 対象レコードのプライマリキーを改行区切りで取得できます。
グローバル格納のフィールドに[スクリプトの結果]で得られたプライマリキーの一覧を設定します。
3に基づいた[関連レコードへ移動]を行えば[サーバー上のスクリプト実行]の検索結果が得られます。
追記)サンプル
http://xfs.jp/HLF8q
※変数使ってます。FileMaker Server がなければ[サーバー上のスクリプト実行]のテストはできません。
Last edited by Moz (2015-07-18 13:46:59)
Offline
ご回答ありがとうございます。
要点のみで理解できない自分がもどかしいです。
サンプルファイルまで頂きましたがちょっと難解でした。
もう少し勉強が必要なようです・・・
ちなみにクライアントで検索をかけるより
この過程を踏んだ関連レコードへ移動の方が早くなるということですよね?
これはPHPのカスタムWEB公開でも同様の効果になるのでしょうか。
PHPの場合はコードの書き方次第ですが、APIを使ってるならどっちみちサーバで検索してるので、変わらないのでは。
むしろ新規に仮想クライアントを作る分遅くなるかな?
>goで検索するよりサーバー上での検索結果をクライアントに返した方が早い
これも条件によるんじゃないですかね?
普通(の索引を使った検索)は検索条件がサーバに送られて結果だけがクライアントに返ってくるんで、早くならない気がします。
全置換とかインポートは、結果のデータをサーバに送る必要がなくなるんで必ず早くなるでしょうけど。。。
scripter さんが書かれている通り条件に左右されます。
検索条件がひとつだけであればクライアントで検索スクリプトを使った方が早いです。
数十万レコード程度であればクライアントで実行しても変化はありません。
検索条件が複雑になった場合は実行速度の違いが顕著に表れます。
質問者さんがご覧になったセッションでも言及されていると思いますが
FileMaker Server がすべて処理するのではないためスクリプト実行にはクライアントの処理能力が影響します。
[サーバー上のスクリプト実行]はどんなケースでも早いということはないので、ある程度は検証しながらの構築が必要でしょう。
Offline
皆様ご指摘、ご回答ありがとうございます。
非常に参考になりました!PHPは少し時間をあけてから頑張ろうと思います。
現状は10万弱のレコードがありその中で一番使う検索は
人物(苗字)
日付(2015/07/21)
日付2(=)
の3フィールドを指定して検索します。
検索結果は20レコード前後が該当します。
サーバー上でスクリプトを実行はうまくつかってみたいので
どなたか詳しい解説をいただけないでしょうか。
引数やプライマリキーなど単語が調べてもいまいちピンと来ずで立ち往生しています。
もともと中級者向けセッションなのである程度の FileMaker の知識は求められているはずです。
まずはヘルプや解説書を読んで FileMaker と データベースへの理解を深められるとよいのでは?
引数は他のスクリプトに値を渡すために利用していて、検索の場合は検索条件を渡しています。
まずはローカルのスクリプトで引数を使ってみてどのように動くのか確認してみては如何でしょう。
[スクリプト実行]とスクリプト引数の例
http://www.filemaker.com/help/14/fmp/ja … 14.13.html
プライマリキーはレコードを一意に識別するためのフィールドです。
FileMaker 12 以降であれば Get ( UUID ) を使えば簡単にユニークなキーが作成できます。
サーバーの検索結果をプライマリキーの一覧で受け取り、
関連レコード移動によってクライアントで再現するという動きを理解できれば簡単です。
Offline
ありがとうございます。
おっしゃる通り知識不足でお恥ずかしいです。
拝見すると皆様わかりやすい解説でたよってしまいました。
私が理解できないのは変な知識があるからかも知れませんが
検索結果を全てユニークにする必要があるのかなと思ってしまいました。
例えばアカウント名でサーバーの検索結果を全置換して
クライアントからそのアカウント名の関連レコードにいけば結果は得られるのではないかと思ってしまいました。
検索結果にフラグを立てるのは、全置換自体に時間がかかってしまうし、アカウント名でなくGet(UUID)を使用するとかでないと次回の検索時に全レコードを全置換する必要ができてしまいます。
検索しただけでレコードが変更されてしまうのも、大抵は問題です。
ありがとうございます。
少し課題は残りそうですがなんとなくはわかりましたので
いろいろ試行錯誤してみます。
ちなみに、どなたかこの理解を深められる
サーバー上ではなくクライアントのみで行える検索の
サンプルがあったりはしますか?
流れとして全てクライアントで動作を理解して
この部分をサーバーに行わせるという形で理解を深めたいと思いまして。
お話の中でとりあえず勉強しなさいというのは真摯に受け止めたいのですが
もう少し甘えさせて頂けると幸いです。
よろしくお願いします。
[サーバー上のスクリプト実行]は余程の自信家でなければクライアント上でテストを行い
クライアントでうまく動作することを確認してからサーバー上での実稼働を行っていると思いますよ。
サンプルが欲しいのは具体的にどの検索を指すのでしょうか?
もちろんサンプル提供するとは限らないワケですが......
FileMaker の理解を深めるためには独習型のテキストを読まれるか、
FileMaker Training Series の有償トレーニングを受けられた方が良いでしょう。
Offline
サーバー上ではなくクライアントのみで行える検索の
サンプルがあったりはしますか?
サーバー上のスクリプトを実行、では無く、普通に、スクリプトを実行、するとテストできるはずですが。
Offline
Pages: 1
[ Generated in 0.019 seconds, 7 queries executed - Memory usage: 545.37 KiB (Peak: 566.27 KiB) ]