プロが教える店舗&オフィスのセキュリティ対策術

質問です。
テーブルのレコード数の増加に伴い、テーブルのExtentの数が200を超えてしまいました。検索のスピードもどんどん遅くなってきています。
このようにExtentが増加することによりが検索スピードに影響を与えるものでしょうか?

また、検索スピードを上げるためにはどうしたらよいのかも教えてください。索引をはったり、Analyzeを実行したりしようかとも考えていますが、どのような方法が有効であるのか分かりません。

よろしくお願いします。

以上

A 回答 (4件)

Extentが増えると、データが断片化されるため、当然、スピードは低下します。



検索スピードを上げる方法としては、大きく次のようになります。

索引のチューニング
SQL文のチューニング
ディスクI/Oのチューニング
メモリーのチューニング
OSのチューニング

となります。(上に行くほど効果が大きい)
基本は、索引とSQL文のチューニングになりますが、3番目のディスクI/OのチューニングがExtentの問題になります。
特に、全件検索が多く(索引を使えない検索)削除などが多い場合に有効になります。その場合は、基本的には、テーブルの再作成(テンポラリテーブルを使ってする方法)があります。
私も、削除が非常に多いテーブルに対し、これを行うことで10倍ぐらいのパフォーマンスを得ることができました。
    • good
    • 0
この回答へのお礼

ありがとうございました。
検討してみます。

お礼日時:2001/08/03 09:52

インデックスをはるのは検索に関しては効果的ですが、有効なはり方をしないと更新のスピードに影響を与えますのでご注意下さい。

    • good
    • 0

バージョン8以上のことは分からないのですが、一番始め


に考えるのは、やはりインデックスをはることでしょう。

うまくやれば、検索時間を数分の1から数十分の1に縮め
ることができます。

RDBに精通した人がやるのが望ましいのですが、原始的
(?)には、速くしたいSQL文のWHERE句にでてくる項目
を、上から順にインデックスのCREATE文に書いてしまえ
ばいいでしょう。

あまり多くの項目にインデックスの項目をはると、insert
文が遅くなるかもしれませんが、その時はあまり値の変化
しない項目(例えば「性別」のような)をインデックスか
ら外していけばいいと思います。

インデックスの効果があまりないような場合は、専門家に
依頼するのが一番でしょう。

副問い合わせを使いたくなるような複雑な検索では、SQL
文の巧拙によっても検索時間がまったく変わりますが、
書き直すと再テストが必要になってしまいますので、これ
は質問の範囲外でしょうね。
    • good
    • 0
この回答へのお礼

ありがとうございました。
やはりインデックスが有効なのですね。
検討してみます。

お礼日時:2001/08/03 09:53

一般的な傾向として、レコード数が増加すればする程、検索のレスポンスは


悪化する傾向があります。これはExtentが増加しないように大きめの
テーブルスペースを確保していても発生する現象です。

Oracleのバージョンが書かれていないので、Oracle8以上を前提にコメント
しますが、データ量が非常に大きいテーブルをアクセスする場合、データを
複数のテーブルスペースに分割して格納する方法(パーティションテーブル)
が一番効果があります。

もちろん、それ以前に最適なインデックスを作成するなどの一般的なチュー
ニングも必要です。
Oracleのチューニングのスキルがある人がOracleのログを解析すれば、
どういうチューニングが効果的かはだいたい判別できます。

ご自分でスキルが足りなければ、Oracleに精通したSI会社にチューニング
の部分を外注することをオススメします。
    • good
    • 0
この回答へのお礼

ありがとうございました。
検討してみます。

お礼日時:2001/08/03 09:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す