SQL Server のテーブルにインデックスの追加
SQL Server のテーブルにインデックスを追加したいと思っています。
Magicのプログラムで旧レイアウトから新レイアウトへのコピPGを作るのではなく、もっと簡単な方法はないのか実験してみました。
以下の方法によりインデックスの追加とインデックスに情報が追加されるのだろうと思っています。
CREATE CLUSTERED
INDEX D_売上明細IDX4 ON HogeDB.dbo.D_売上明細 (受注明細ID,日付,伝票番号,行)
ALTER INDEX D_売上明細IDX4 ON HogeDB.dbo.D_売上明細 REBUILD
上記処理の後、Magic上のデータリポジトリにインデックス指定を追加して、APGでデータを開いて先程のインデックスを指定すると、時間かからずそのインデックス順で表示されました。
おそらくこれでGoodだと思うのですが、Goodか、No Good か教えてもらえないでしょうか?
-
作業後このテーブルのインデックス領域が
155MBだったのが
189MBに増えていました。
CREATE CLUSTERED INDEX よりも
CREATE NONCLUSTERED INDEX の方が普通にMagicで作る形と似ていたので
NONCLUSTERED にしてみます。
NONCLUSTEREDだと、このテーブルのインデックス領域が
213MBに増えていました。
項目追加もインデックス追加もMagic上でプログラム作らないで済むとなると
データ改変が時短できそうです。 -
nkmtさん、
Magicの初心者の方で、誤解する人がいるといけませんので、ちょっと補足しておきますね。
Magicの開発版さえあれば、わざわざプログラムを作らなくても、データリポジトリで簡単にインデックスを追加して、データ変換も自動で行うことができます。
補足でした。
-
tandaさん こんばんは。
tandaさんのおっしゃる通り、Magic開発版でテーブルに項目を追加したり、インデックスを追加したりして、データを変換しますか?はい!で新レイアウトに変換できます。
大昔、同じソフトを数件入れている会社さんがあり、客先に行く度に開発版で同様の作業をしている人がいて驚きました。
私も同じソフトをいくつもの会社に導入しているので、何百万件というデータが存在するテーブルもあるので、データ定義変更の改善の選択肢が増えて今回良かったです。
ちょっと前まで項目追加時は旧レイアウト → 新レイアウトコピーPGを作っていました。
今はそれもしなくなり、項目追加もSQL文で、今回はインデックス追加もSQL文で可能になり良かったです。 -
nkmtさん、
> 大昔、同じソフトを数件入れている会社さんがあり、客先に行く度に開発版で同様の作業を
> している人がいて驚きました。データの持出しが許可されていない場合はそうしている人が多いですよ。ですので、エンドユーザさんには開発版の費用も予算を組んでいただいているケースもあると思います。
開発版が使用できずに、変換プログラムを作って対応するというアイデアを最初に編み出したのは、埼玉のOさんです。その後、パッケージを作っている会社さんは、皆その方法を真似し始めたようですが。。。
-
埼玉のoさんって存じ上げませんし旧レイアウトから新レイアウトへのコピーなんて、アイディアとか謳うような話でもないですし。
客に開発させる、客先環境で開発するならわかりますけど、データ移行のためだけに開発版買わせるのもなんだかなあと思います。 -
埼玉のOさんはもうお歳で、すでに現場からは引退されているかとは思いますが、Magicの黎明期にその普及にたいへん貢献された方でして、いわゆる天才的なマジシャンでした。Magicを用いてMagic開発版のシミュレータを作るなんてこともされてました。
当時は、Magicのシステムというと、何千万、何億のシステムが多かったですから、そのうちの開発版1本の予算は、他の手間を考えると、その効果に見合った発想でして、これも画期的なアイデアでしたね。なんといっても、現場に出向での開発もできますし。。。
-
おはようございます。
そうなんですね。
Magicで何千万円の仕事に携わった経験は1度しか私はなく、何億なんて仕事も未経験です。
その何億からすると60万円の開発版は安いもんですね。
それでインデックスの追加の件ですが、私が実験しようとしている売上明細ファイルは560MBぐらいでした。
件数にして162万件。
スタンドアロンだとインデックス無しでの絞り込みも難なく動いてくれました。
今日はクライアントサーバーで実験をしてみます。
また話が逸れてしまいますが、昔Pervasiveで作った頃のシステムは、売上明細にインデックスが7本ありました。
適切なインデックスも存在しないSQL Serverのデータを、サーバークライアント環境の実験で速度難が無いようなら今回のインデックス追加は中止します。 -
サーバーメモリ 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
サインインしてコメントを残してください。
コメント
8件のコメント