メインコンテンツへスキップ

5万件の商品マスタ検索について

コメント

12件のコメント

  • umemori

    いつもありがとうございます。

    違いは、APGは、1つのタスク、

        商品マスタ検索は、親タスク 商品名検索用 変数フィールド

                  子タスク 商品マスタDBの表示明細フィールド

            親子2つのタスクです。(キャッシュなし)

     親子タスクの場合に遅いと思われます。

  • umemori

    明細タスク キャッシュありにしても遅さはかわりません。

    Pgddwn pgup 2秒以上すぎてから次頁、前頁が表示されます。

    いったん、明細タスクのテーブルコントロールを削除して

    再定義(商品コード、商品名のみ)しても遅いです。

    Pgddwn pgup 2秒以上すぎてから

    表示されます。

  • Tanda

    「商品名検索」とありますが、検索文字列は部分一致でしょうか、先頭一致でしょうか?部分一致でしたらインデックスが使えませんので、何をするにも毎回、全件レコード総なめ検索になりますよ。

    Google検索とかで検索が速いのは、Google社が外部の特殊なインデックスを使用しているからです。

     

  • umemori

    下記 範囲のSQL WHERE句をはずしたところ

    Pgddwn pgup は、件数が少ない場合にくらべて多少もたつきますが

    多少改善されました

     MAGIC SQL句

       sho.商品名 LIKE ('*'&Trim(画面.商品名)&'*')

        ↑ NGと思います。画面.商品名スペースの場合

          MagicSQL句を無視できるとよいのですが...

     

     

  • Tanda

    それだと完全に部分一致検索の構図になります。部分一致検索ではインデックスが使えませんよ。

  • umemori

    magic sql like文は、全て検索するのでNG

         現在 SQLコマンドにしたところ改善されましたのでこの方向でいきます。

     親子タスクの関係は、タスクをAPGにしましたが条件設定まではやっておりません。

     申し訳ありません。

    最初の画面表示にかかる時間、スクロールの遅さは、MagicSQLが最大の原因としています。

         

      

     

  • umemori

    いつもありがとうございます。

    MagicSQLでCndRange関数ですとチェックエラーとなります。

     検索指定なしのときにLIKE分が回避できるとたすかるのですが...

  • umemori

    いつもおせわになります。

    明細タスク

     メインソース   商品マスタ

     表示.商品名   L=論理 代入 SHM商品名 LIKE ('*'&Trim(画面.商品名)&'*')

     SHM商品名   範囲 CndRange(画面.商品名<>'','TRUE'LOG) または 

                 ←CndRangeは、値でないとチェックでエラーとなります。

          またはCndRange(画面.商品名<>'',表示.商品名) 同様です。

       わたしのコーディングが的外れかもしれませんが...

  • umemori

    何度もありがとうございます。参考にさせていただきます。

    magicSQLは、疑似的にSQLコマンド発行のためSQLコマンドに比べて遅いということです。

    過去にXPA3.XのMAGICSQLのLIKE文(2万件)でもたつくことはなかったのですが・・

    現在、他の検索プログラムもSQLコマンドの方向で検討中です。

  • umemori

    しいて言うと

     商品名のほかに

      実は、型式名、備考名、メモ欄も 「AND LIKE文」にしています。

     あと考えられるのは、テーブルコントロールが若干重い気がします。

     4.6では、ラインモードでチェックボックスあり、Pgdwon、PgUPするとチェックボックスの

     残像が残ります。パッチがくるまであきらめています。

  • umemori

    いーさぽへ調査依頼したところ単なる私の環境設定ミスです。

    当初テーブルコントロールを疑っておりましたが

    MagicSQLのレスポンスに問題はありませんでした。

    おさがわして申し訳ありません。

    3種類の検索方法があるようです。

    SQLコマンド

    DBSQL

    MAGICSQL

     上記3種類がありますがメンテナンスを考慮しながら

     使い分けるとよいかもしれません。まだDBSQLは、ためしていません。

  • umemori

    データーベース 『MSSQL』複数あるので 

       F4:行追加 『MSSQL2』

     データベース特性 → SQLの設定

                 本来 「LimitLink...ONLINE_ARRAY..」 となりますが

                 空白でありました。

      必ずぬけがでる危険性があります。 ↑ONLINE_ARRAY..」意味はわかりませんが..

サインインしてコメントを残してください。