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

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

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

You are not logged in.

Announcement

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


#1 2018-05-01 14:24:34

KRpo
Member

レコード数のcountを高速化するには・・・?

いつも参考にさせていただいています。
やり方がわからないというよりも対処のしようがあるのかないのか
ご意見頂戴できればと思いまして投稿しました。

案件テーブルに20万件ほどのレコードがあり、処理が終われば「完了フラグ」フィールドに「1」を設定しています。
ですが、完了フラグを立てて次のレコードに移動しようとすると、
-------------
検索実行中・・・
クエリーを処理中
-------------
とのダイアログが3秒ほど出てその間操作ができません。
この表示時間をなくすもしくは短縮する方法は、機器の性能アップ以外にあるでしょうか?


なお、ダイアログ表示の原因はほぼこれ↓だと判明しています。
「メニュー用のレイアウトに、メニュー::Keyフィールド「1」と案件::完了フィールド「1」でノットイコールでリレーションし
未処理案件をCountさせている」

ですが、未処理件数のリアルタイムは処理者の利便性のためにどうしても外せません。
良い方法はないでしょうか?

Offline

#2 2018-05-01 15:00:30

Shin
Member

Re: レコード数のcountを高速化するには・・・?

一つは、完了フラグフィールドに索引が無いためでは。フィールド定義のオプションで、常に索引をつくるに変更してみてください。
また、1以外を検索しているようですので、内容を 0 又は 1 にして、0 を検索するように変更すると早くなると思います。

Offline

#3 2018-05-01 17:10:03

KRpo
Member

Re: レコード数のcountを高速化するには・・・?

Shinさんありがとうございます。
フィールドに索引はありましたので、
>>内容を 0 又は 1 にして、0 を検索するように変更
この方法を試してみました。

しかし、「チェックボックスにチェックマークが付けば処理完了」(値一覧の「1」のON/OFF)という表示が
0/1の切り替えの場合には出来なさそうで悩んでいます。
チェックボックスを使ってチェックマークのありなしを表示するのには値が「null or  1」である必要があると認識していて
今までのファイルではずっと値一覧「1」を使うようにしていたためです。

0や1のチェックをつけるのはスクリプトで行うとしても、
「0ならチェックマークなし・1ならチェックマークあり」については
正攻法とちょっと外れた気がする手法しか思いつきませんでした。
これ以外のやりかたはあるでしょうか?
・表示用の別フィールドを設ける
・オブジェクトを隠す機能を使う
・書式を「論理値」にして0ならnull、0以外なら1にする

Offline

#4 2018-05-01 17:14:03

Shin
Member

Re: レコード数のcountを高速化するには・・・?

表示は今のままで、入力場面で 0,1のラジオボタンにするか、フィールドそのものをボタンにして、not ( 自フィールド ) をフィールド設定するといいです。
> 処理が終われば「完了フラグ」フィールドに「1」を設定
で、完了フラグを取り消すことがないのでしたら、フィールドの自動入力で0を入力させておき、1のみのラジヲボタンにしておいてもいいですね。(既存の空白は、検索して全置換で入力できます)

ただ、20万レコードだと、2秒程度は仕方ないかも。時々、最適化保存をしてみると、少しは早くなるかもしれません。

Last edited by Shin (2018-05-02 12:23:19)

Offline

#5 2018-05-02 01:57:18

mic
Member

Re: レコード数のcountを高速化するには・・・?

単にリアルタイムで残数を表示したいというだけであれば、処理中だけ件数の表示をマージ変数に変更してループの度に減算するようにすれば毎回再検索が掛かったりはしないのではないでしょうか。

または根本的な解決にはなりませんが、1件1件更新するのではなく基本ウィンドウの固定で更新停止させ、例えばループ100回ごとにウィンドウの再表示で更新するようにすると、ストレスはいくらか減ると思います。

Offline

#6 2018-05-02 16:24:17

Shin
Member

Re: レコード数のcountを高速化するには・・・?

20万レコードで同様の実験をしてみましたが、更新には0.5秒もかかりませんでした。
ファイルのフラグメントかネットワークなどの環境によるものでは。
もし、ファイルが共有されているものでしたら、サーバーサイドで計算させておき、その結果を表示させるといいかもしれません。

Offline

#7 2019-02-21 16:08:08

TTTT
Guest

Re: レコード数のcountを高速化するには・・・?

似たような案件だったのでここに質問します。
FM11ではダイアログ表示なかったのにFM17にバージョンアップ後から表示されるようになりました。
表示させない設定はありませんか??

#8 2019-02-22 08:53:00

Shin
Member

Re: レコード数のcountを高速化するには・・・?

ダイアログとは?
処理待ちの何らかの表示は、あった方がいいと思います。それがスライドバーだったらさらにいいでしょう。

Offline

#9 2019-02-22 09:34:54

TTTT
Guest

Re: レコード数のcountを高速化するには・・・?

上で書かれているのと同じです。
-------------
検索実行中・・・
クエリーを処理中
-------------
これが出ている間は入力が出来なくなってしまいます。

#10 2019-02-22 16:00:44

Shin
Member

Re: レコード数のcountを高速化するには・・・?

データの更新が行われているので、それを止めるように改修するしかないでしょう。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 566.21 KiB (Peak: 581.91 KiB) ]