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

インデックスの設定

コメント

19件のコメント

  • nkmt

    今の照会リンクBよりも上に、もう一つ照会リンクBを作り、上のBの項目Cで元々のBを照会リンクしてみるのはいかがですか?

  • Wujin

    ISHIJIMA様

    すみません。SQLserverです

  • Wujin

    nkmt様

    データテーブル上で
    B-Bリンク
    A-Bリンク
    とすればいいのでしょうか

  • nkmt

    このように解釈しました。
    メインソース Aテーブル
    照会リンク  Bテーブル(位置付け式 このテーブル自身の項目C)
    としているのだと解釈いたしました。
    ※自分自身の項目で位置付けというのは全くやった事ないです。

    それを
    メインソース Aテーブル
    追加の照会リンク  Bテーブル
    元々の照会リンク  Bテーブル(位置付け式 追加Bテーブルの項目C)
    とするのがいいのではないかと思いました。

  • nkmt

    照会リンクテーブルで範囲絞りが遅いのか、位置付けが遅いのかどちらなんでしょうね。

  • nkmt

    範囲絞りの話なら、照会リンクBテーブルを外部リンクに変えるのも速度向上に繋がるでしょうね。
    もしそうなら私の昨日までの書き込みは全て無視してください。

  • Wujin

    nkmt様 ISHIJIMA様

    レスありがとうございます。

    nkmt様

    位置づけと書きましたが、範囲付けです。

    Bテーブルのcカラムで、文字列「DDD」を範囲付けしたいのですが

    この処理が遅いということです。説明不足で申し訳けありません。

     

    ISHIJAMA様

    マニュアル等見てみましたが、ビューの定義をして一つのテーブルとするというのがわかりませんでした。

    自分でももう少し調べてみます。

     

    データビュー上でメインテーブルに照会リンクをつけるのは、外部リンクという認識でしたが

    そうではないのですね。。。

     

  • nkmt

    照会リンクは都度都度SELECTが発行されるけど
    外部リンクは、SQL Server側でJOINが済ませた状態になると思います。
    外部リンクはSELECT文の発行回数が少ないと思います。
    速度向上を期待出来る場合があると思います。

    メインソース(テーブルA)のデータ件数はどのくらいなのでしょうか?


  • Wujin

    ISHIJIMA様

    >Microsoft SQL Server Management Studio等でビューを作成するという事です

     

    やってみます。

     

    nkmt様

     

    データ件数は何万件かあると思います。日々増えています。

     

  • nkmt

    リンクテーブルの項目Cでも絞り込みますが
    メインソースの項目でも絞り込めるといいんでしょうけどね。

  • kitabayashi

    ・Bテーブルを外部リンクして、位置づけのみ。
    ・Bテーブルのcカラムに対する範囲指定は、DB SQLまたはMagic SQLで行う。
    の設定でどうでしょうか。

  • Tanda

    Takeiさん

    1対N(複数)のリンクを張ろうとされているのでしたら、照会リンクを用いるより、サブフォームを使った階層構造のタスクにするほうがいいですよ。照会リンクは1対1の関連付けを行うための機能ですから、複数のレコードに対してリンクを張るには適していないです。

    サブフォームという機能を用いれば、1対Nの関連付けを1画面で実現することが可能です。

  • nkmt

    kitabayashiさん>
    データビューでの範囲絞りでは、From~To範囲指定の時はよく使いますが
    私はDB SQL や Magic SQL はあまり使用しておりません。
    ここだとFrom~To以外も指定出来ますし、tandaさんが以下で言われてますように
    https://muforum.magicsoftware.co.jp/hc/ja/community/posts/7257410711577
    DBカラム名の指定が不要になる以外にも速度向上にも役立つのでしょうね。


  • Wujin

    細かい説明が不足していました。

    申し訳ありません。

     

    使用テーブル

    Aテーブル カラム  e、f、g  ==>メインテーブル

    Bテーブル カラム b、c、h  ==>照会テーブル(実際は照会テーブルは他にも有り)

     

    下記のようなフォームにしています。(グリッド状)

    A.e、A.f、A,g、B.b、B.c、B.h

    フォームのフィルタリング機能でB.cカラムのDDDという値で

    範囲付けすると遅いということです。

    (当然通常の範囲付けでも遅いですが)

  • Pu

    こんにちはPuです。
    joinかけるTABLE Aに絞り込み条件がなくて join相手のTABLE Bにしか絞り込み条件がない場合
    (項目 Cのみで抽出)
    全件joinが掛かる(ビューを定義しても同じ)のでデータ件数が多くなればなるほど遅くなります
    少しでもTABLE Aに絞り込み条件がありかつTABLE B の条件(項目 C)でjoinすれば早くなりますけど
    でわ~でわ~

  • Tanda

    Puさんが言われる通りですね。毎回、全件検索になりますので遅くなりますね。

  • Wujin

    皆様ありがとうございます。

     

    ビューを試しましたが、範囲付けはレスポンスは早くなりました。

    簡易的なテーブルで試したので、リンクが多ければ遅いのかもしれませんが

    (インデックスを追加して変換処理の最後でエラーが出ました。。。

    ・・・のオブジェクトは既にあります、、みたいな)

     

    外部リンクも今のプログラムで変えてみましたが、レスポンスが速くなりました。

     

    ひとまずは外部リンクで対応したいと思います。

    テーブルの構成も見直しが必要かもしれません。

     

    使用歴がMagicはV8からいきなりxpaになったので、基本がないとつらいな、、、と思いました。

    (dbもpervasiveでまったくいじりませんでしたし)

     

    勉強になりました。ありがとうございました。

  • nkmt

    > テーブルの構成も見直しが必要かもしれません。
    正規化には反しますが、私は
    売上鑑データの項目である得意先コード、売上日、営業担当者コードなどのレプリカ値を
    売上明細データにも保持しています。
    良し悪しあると思いますが。

  • nkmt

    ISHIJIMAさん お世話になっております。
    今回の質問者様もそうでしたが、Magicの普通の作りで大量件数で照会リンクの項目で絞ると遅いので、鑑の項目を明細にも保持する非正規化を取りがちです。
    外部リンクにすると速度向上が見込まれる場合もありますし、ビューやSQLコマンド、DBSQL、Magic SQL等を使うとどうなのかとか、Pervasiveならどうなのかとかいろいろありますね。

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