OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

oracleのSQLパフォーマンスについて

  • すぐに回答を!
  • 質問No.7748085
  • 閲覧数424
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

oracleのSQLパフォーマンスについて質問です。
当方、SQLは初めてで、ずぶの素人ですが、SQLパフォーマンスを改善することになりました。
質問の仕方も悪いとは思いますが、お力添えをいただきたいと思います。


【質問1】
DBのレコード件数は、SQLパフォーマンスにどう影響するでしょうか?以下例のようなことが知りたいです。

例1
INDEXのないテーブルに対しSQLを発行する場合、レコード件数の多いDBとレコード件数の少ないDBでは、レコード件数が少ない方が、パフォーマンスが良い?
(前提として、検索対象DBは、レコード件数以外に差がないとする)

例2
WHERE句にINDEX項目を使用した場合、DBのレコード件数はパフォーマンスに影響しない
(前提として、アクセスパスは適切で、検索対象をうまく絞り込むことができる)

例3
WHERE句にINDEX項目を使用したSQLをレコード件数の多いDBに発行する場合と、WHERE句にINDEX項目がないSQLをレコード件数の少ないDBに発行する場合では、どちらがパフォーマンスがよいのか
(前提として検索対象DBは、レコード件数以外に差がないとする)


【質問2】
INDEXをDBに追加すると、INSERT、UPDATE、DELETEの際に、どのくらい影響するのでしょうか?
対象のDBは、5項目あり、400万件くらいのレコードがあります。また、複合項目(2項目)のプライマリキーと、単一INDEXがついており、新たに3項目の複合INDEXを追加しようとしています。


以上、よろしくお願いいたします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 40% (175/429)

Oracleのバージョンの記載が無いため、最新版という解釈で回答しますね。 質問1のポイントは、SQL文の実行計画が低コストで実施されるよう書いてあるかが大前提ですので、explain planや、SQLトレースを使用して、低コストになるようSQLを書きなおす、そしてテストを行い、再度トレースを採取し・・の繰り返しでチューニングを行うのがベターかと。 ちなみにですが、where句にインデックス項目が使 ...続きを読む
Oracleのバージョンの記載が無いため、最新版という解釈で回答しますね。

質問1のポイントは、SQL文の実行計画が低コストで実施されるよう書いてあるかが大前提ですので、explain planや、SQLトレースを使用して、低コストになるようSQLを書きなおす、そしてテストを行い、再度トレースを採取し・・の繰り返しでチューニングを行うのがベターかと。

ちなみにですが、where句にインデックス項目が使用されていても、その項目が型変換されるよう書き方をされている場合インデックスが使用されなくなる可能性がありますのでご注意下さい。

質問2ですが、これは一概に「こうだ!」という説明は難しいと思います。(詳細な環境説明が無いため回答しにくいです)


また、これはDB全般に言えることですが、1つのSQLをチューニングしていくのはなく、もっと多くなくくりでチューニングをして行ったほうが早い場合もあります。
それには、スタッツパック等のツールを使用します。
それには、CPUの負荷はどれくらいか、ディスクのIO待ちは発生していないか、キャッシュメモリに余裕があるか、バッファヒット率が高いか、一番遅いSQLは何か、ナドナド、様々な情報が出てくるツールですので、それを元に「システム自体のチューニング」を実施していったほうが良いと思います。

乱文乱筆失礼しました。
また、参考にならかったらスミマセン。


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ