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

SQL Server のテーブルにインデックスの追加

コメント

8件のコメント

  • nkmt

    作業後このテーブルのインデックス領域が
    155MBだったのが
    189MBに増えていました。

    CREATE CLUSTERED INDEX よりも
    CREATE NONCLUSTERED INDEX  の方が普通にMagicで作る形と似ていたので
    NONCLUSTERED にしてみます。

    NONCLUSTEREDだと、このテーブルのインデックス領域が
    213MBに増えていました。

    項目追加もインデックス追加もMagic上でプログラム作らないで済むとなると
    データ改変が時短できそうです。

  • tanda

    nkmtさん、

    Magicの初心者の方で、誤解する人がいるといけませんので、ちょっと補足しておきますね。

    Magicの開発版さえあれば、わざわざプログラムを作らなくても、データリポジトリで簡単にインデックスを追加して、データ変換も自動で行うことができます。

    補足でした。

     

  • nkmt

    tandaさん こんばんは。

    tandaさんのおっしゃる通り、Magic開発版でテーブルに項目を追加したり、インデックスを追加したりして、データを変換しますか?はい!で新レイアウトに変換できます。

    大昔、同じソフトを数件入れている会社さんがあり、客先に行く度に開発版で同様の作業をしている人がいて驚きました。

    私も同じソフトをいくつもの会社に導入しているので、何百万件というデータが存在するテーブルもあるので、データ定義変更の改善の選択肢が増えて今回良かったです。

    ちょっと前まで項目追加時は旧レイアウト → 新レイアウトコピーPGを作っていました。
    今はそれもしなくなり、項目追加もSQL文で、今回はインデックス追加もSQL文で可能になり良かったです。

  • tanda

    nkmtさん、

    > 大昔、同じソフトを数件入れている会社さんがあり、客先に行く度に開発版で同様の作業を
    > している人がいて驚きました。

    データの持出しが許可されていない場合はそうしている人が多いですよ。ですので、エンドユーザさんには開発版の費用も予算を組んでいただいているケースもあると思います。

    開発版が使用できずに、変換プログラムを作って対応するというアイデアを最初に編み出したのは、埼玉のOさんです。その後、パッケージを作っている会社さんは、皆その方法を真似し始めたようですが。。。

     

  • nkmt

    埼玉のoさんって存じ上げませんし旧レイアウトから新レイアウトへのコピーなんて、アイディアとか謳うような話でもないですし。
    客に開発させる、客先環境で開発するならわかりますけど、データ移行のためだけに開発版買わせるのもなんだかなあと思います。

  • tanda

    埼玉のOさんはもうお歳で、すでに現場からは引退されているかとは思いますが、Magicの黎明期にその普及にたいへん貢献された方でして、いわゆる天才的なマジシャンでした。Magicを用いてMagic開発版のシミュレータを作るなんてこともされてました。

    当時は、Magicのシステムというと、何千万、何億のシステムが多かったですから、そのうちの開発版1本の予算は、他の手間を考えると、その効果に見合った発想でして、これも画期的なアイデアでしたね。なんといっても、現場に出向での開発もできますし。。。

  • nkmt

    おはようございます。
    そうなんですね。
    Magicで何千万円の仕事に携わった経験は1度しか私はなく、何億なんて仕事も未経験です。
    その何億からすると60万円の開発版は安いもんですね。
    それでインデックスの追加の件ですが、私が実験しようとしている売上明細ファイルは560MBぐらいでした。
    件数にして162万件。
    スタンドアロンだとインデックス無しでの絞り込みも難なく動いてくれました。
    今日はクライアントサーバーで実験をしてみます。
    また話が逸れてしまいますが、昔Pervasiveで作った頃のシステムは、売上明細にインデックスが7本ありました。

    適切なインデックスも存在しないSQL Serverのデータを、サーバークライアント環境の実験で速度難が無いようなら今回のインデックス追加は中止します。

  • nkmt

    サーバーメモリ 20GB、SQL Server 2017 EXPRESS、mdfファイルサイズ 3.6GB
    売上明細テーブル 560MB  162万件

    仕入明細の受注明細IDで → 売上明細データを照会リンクする表形式オンラインタスク
    売上明細データには適切なインデックスも無し、範囲絞りもできない中、
    仕入明細を↓キーで降りて行って、サブフォームの売上明細も軽やかに動きました。
    当面インデックスを追加するのはよしときます。

    という訳で以下の本番出番は今回見送りです。

    CREATE CLUSTERED
     INDEX D_売上明細IDX4 ON HogeDB.dbo.D_売上明細 (受注明細ID,日付,伝票番号,行)

    ALTER INDEX D_売上明細IDX4  ON HogeDB.dbo.D_売上明細 REBUILD

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