QA@IT

インデックスの無いテーブルのパフォーマンス

7749 PV

最近、顧客から基幹システムを更新に伴いパッケージを導入したのだけど
何をやってもレスポンスが異常に遅いと相談を受けました。

WEBシステムで
OS WindowsServer2016 Standard
DB SQLServer2017 Standard

確かに酷い時などは画面の表示に5分程かかる事もあり正直な処
WEBアプリとして致命的なのではと感じました。

幸いな事にSQLServerの管理ツールを使う事が出来たので
テーブルを確認すると主キーも無いしインデックスも設定されていない。
DB作成時の容量も拡張容量も初期値のままで取り扱うデータ量からして
オーバーヘッドになる事は間違いないです。

しかしパッケージを納入した業者はネットワークが遅いとか検索する際には
キーワードで絞れば早くなるとか特に問題視していないようです。

そこで本題の質問ですが、データベース設計においてインデックスの無い
テーブルがパフォーマンスを出す事は可能なのでしょうか?

またもしあるなら技術的にどの様な事を行っているのでしょうか?

とにかくツッコミどころ満載なパッケージなのですが納入業者は自身満々な
ものですがら自分が今まで習得した技術とは別に何かあるのかと思い自信が
無く質問させていただきました。

宜しくお願い致します。

回答

検索毎に、ファイル全体を読むことになるので、SSDとかRAMDISKに入れるくらいでしょうか。

編集 履歴 (0)
  • ご回答ありがとうござます。
    対応策として高速なハードウエアに頼るしかないとなると
    あきらかにDBの設計ミスですね。
    ※自分としては設計ミス以前の問題とも思えますが…
    -

しかしパッケージを納入した業者はネットワークが遅いとか検索する際には
キーワードで絞れば早くなるとか特に問題視していないようです。

スピードを問題にするなら、まずは計測です。何件の検索結果を出すために、どの段階(検索しきるまで、ネットワーク転送、表示など)でどれくらいの時間がかかるのか、計測しましょう。ネットワークの転送速度に比べて検索時間が圧倒的に長いなら、具体的に、「これだけかかっているのだから問題である」といえますよね。
検索も、何件くらいの結果になる検索が多いのか、統計を取りましょう。これも具体的に、「これくらいの量の検索結果となる検索が多く、そのときにはこれだけの時間がかかるので問題だ」と、具体的にできます。

編集 履歴 (0)
  • ご回答ありがとうございます。
    確かに具体的な数値を納入業者へ提示する事で対応してもらうのが最善かと考えております。


    今回の件は全てのテーブルにおいて主キーやインデックスが全く使われておらず自分の経験上見た事が無いけど、導入実績のあるパッケージとの事でしたし納入業者も自信満々だったので、もしかしたら自分が知らないだけで世の中そんな設計もあるのかな?と思い質問させて頂いた次第であります。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。