• 締切済み

INDEXが設定されていない条件での高速化

使用するのは、Oracle9.2とOracle8.1.7です。 現在、大量のデータが登録されているテーブルがあります。 データが多すぎる為、今からINDEXを設定するのには非常に時間がかかり、サーバに負荷がかかる為、設定することはできません。 しかし、INDEXを設定していないフィールドでの検索を 定期的に行うことになりました。 普通に考えると無理な話ですが、 もしかしたら・・・と思い、質問させて頂きました。 よろしくお願いしますm(_ _)m

みんなの回答

  • ken-mm
  • ベストアンサー率0% (0/1)
回答No.3

ALTER TABLE 句でCACHEがつけられればいいのですが、大量データでは無理ですかね?

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

INDEXがないということは全表走査するということなんでしょうが、対策としてはdb_file_multiblock_read_countパラメータの値を32くらいにして再起動することくらいでしょうか。

回答No.1

仮に単票形式でないのであればViewの利用とPL/SQLでかなり改善することができますが(集計用でしたら確実に向上…マテリアライズド・ビューの利用) 単票形式のレコードを単に所得するという場合は実際の検索自体に時間が取られているということになりますのでパフォーマンスの向上が難しいケースであると思います。 ともかく、Oracleの稼動状態、OSのリソース消費、処理時間(SQLで検索している実時間)を所得してどこに問題があるのか探すしかないでしょう。