• ベストアンサー

INDEX作成による更新系の影響範囲

環境:Oracle9i 9.2.0.1 言語:VB6 システム:受注管理システム ある業務アプリの性能改善の為、顧客マスタにインデックスを作成したいのですが、更新系の処理が遅くなることを嫌ってなかなか承認が下りないです。 そんなに負荷はかからないと思うのですが、実際インデックスを1つ作成するとどの程度影響があるのか客観的に証明できないから困っています。 上記の業務アプリは毎日使用しています。 データ件数は100万件程度です。 参考までにインデックス作成前のINSERT文実行した実行計画とインデックス作成後のINSERT文実行した実行計画を記述します。 作成前 統計 ---------------------------------------------------------- 86 recursive calls 26 db block gets 14 consistent gets 29 physical reads 2956 redo size 628 bytes sent via SQL*Net to client 825 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 4 sorts (memory) 0 sorts (disk) 1 rows processed 実行後 統計 ---------------------------------------------------------- 281 recursive calls 27 db block gets 73 consistent gets 20 physical reads 3044 redo size 633 bytes sent via SQL*Net to client 825 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 7 sorts (memory) 0 sorts (disk) 1 rows processed そんなに影響がないということを証明したいのですが、上記統計で大したことないと証明できますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.2

索引に指定するキーの数や更新頻度にもよるでしょうが、1キーや2キー索引くらいでは SQL*Loader 等で大量のデータをロードしたりするような処理がない限り、たかが100万件程度で極端な性能劣化が起こるということはまずありません。 ただし、SELECT 時に作成した索引が効率的に使用されるかどうかも含めて、検証環境などで性能試験をされることを強くお勧めします。 statspack ユーティリティなどもインストールして、ディスク I/O 等にも注目してみてください。

その他の回答 (1)

回答No.1

この実行計画の結果からではないのですが、 インデックスの作成前と作成後のSELECTとINSERTの ベンチマークを実施(もちろんテスト環境で)して INSERTでの時間差がそれほど無い事、SELECTを実行したときのパフォーマンスの改善したことを提示してみてはいかがでしょうか?

関連するQ&A