No.1ベストアンサー
- 回答日時:
統計情報なしのデフォルトということはオプティマイザはルールベースで実行されます。
ルールベースはSQLの書き方(WHERE句の構文等)とインデックス情報によってどのようにアクセスするか決定します。
>現在、あるSQLの速度が遅いのですが、SQLの構成を替える前に「統計情報なしのデフォルト」から「統計情報を取る」に変更すべきか分かりません。
そのシステムが「運用中」なのか「開発中」なのかで多少状況が変わりますが、「運用中」であるなら『「統計情報を取る」に変更』することは控えたほうが良いと思います。
「統計情報を取る」ようにしたことで他のSQLが遅くなる「可能性」があるためです。統計情報をとりたいのであればどのようなタイミング、間隔でどのオブジェクトに対し統計情報を取るかなどいろいろ決める必要があります。
遅いSQLがわかっているのであれば、SQLTRACEなどで実行計画を確認し、そのSQLに対し遅い原因を解消してあげるべきだと思います。
#統計情報を取ったからといってすべてのSQLが速くなるワケではないので。
#参考URLの記事は若干古いバージョンのものですが、基本となる考えは変わりませんので参考になると思います。
#統計情報は9iの場合はdbms_statsパッケージを使います。
参考URL:http://www.int21.co.jp/pcdn/oracle/article/optim …
No.3
- 回答日時:
#1です。
>この統計情報のデフォルト値は、OPTIMIZER_MODE が FIRST_ROW または ALL_ROWS になっている場合 (つまり、コストベースオプティマイザを使用) で、かつ対象オブジェクトに統計情報が存在しない場合に使われます。
言い忘れていましたが、私の言っていたのはOPTIMIZER_MODEがchooseの場合です。(デフォルトと書いてあったのでFIRST_ROW または ALL_ROWSは考えてませんでした)
#勉強になりました>entreeさん
No.2
- 回答日時:
統計情報のデフォルト値はブロック数、平均レコード長、カーディナリティなどがあり、ハードコーディングされています。
(つまり、計算されているわけではなく、いかなる表や索引に対しても固定値が使用されます。具体的な値が知りたい場合は保守契約をしてください)この統計情報のデフォルト値は、OPTIMIZER_MODE が FIRST_ROW または ALL_ROWS になっている場合 (つまり、コストベースオプティマイザを使用) で、かつ対象オブジェクトに統計情報が存在しない場合に使われます。
> 現在、あるSQLの速度が遅いのですが、
開発中なら統計情報を取ってもいいと思いますが、本番運用中であれば影響範囲を最小限にするために、ヒント句を使用するのが一般的でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 世界情勢 極悪アメリカが近々のデフォルト・破綻するという情報は事実でしょうか。 4 2023/03/13 10:23
- 物理学 統計力学と情報理論の、エントロピーの同じことを教えてください 2 2022/09/09 20:29
- その他(ブログ) はてなブログ 設定 1 2023/08/15 05:06
- 哲学 等情報エントロピー帯域の特定(形式学) 1 2023/07/05 20:46
- 統計学 等情報エントロピー帯域の特定(形式学) 1 2023/07/05 20:48
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- ヤフオク! ヤフオク 2 2023/04/28 22:30
- メディア・マスコミ もうNHKが旧統一教会を報道しなくなった訳とは? 8 2022/07/19 08:23
- 就職 先のことが不安すぎる(主に就職活動) 3 2023/06/27 09:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
likeとsubstrの使いわけについて
-
キャッシュを使わずにSELECTを...
-
oracleのanalyzeと処理時間につ...
-
WHERE句の実行順序
-
WHERE句はJOIN結合前結合後どち...
-
アナライズでほとんどの処理が...
-
ヒント句が無効になります
-
問題解決のストーリーにて PDCA...
-
【チューニング】インデックス...
-
エクセルVBAでUserFormを起動し...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
Statement ignored というエラー
-
VBA プロシージャの名前の取得
-
今日の日付が入った行のデータ...
-
ODBCリンクの際にACCESSでは読...
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQL*Loaderでのsysdate使用
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
likeとsubstrの使いわけについて
-
WHERE句の実行順序
-
Like文の速度について教えてく...
-
WHERE句はJOIN結合前結合後どち...
-
ヒント句が無効になります
-
JOINの時のONとWHEREの違いにつ...
-
あいまい検索のパフォーマンス...
-
アナライズでほとんどの処理が...
-
SQL ORDER BYにおける条件について
-
800万件のテーブル読み込み...
-
問題解決のストーリーにて PDCA...
-
実行計画HASH JOIN RIGHT OUTER
-
oracleのanalyzeと処理時間につ...
-
PDCAを回すって?
-
【チューニング】インデックス...
-
Oracleで検索すると、フリーズ...
-
Oracle 実行計画、統計情報の見方
-
OEMで負荷の少ないSQLの実行計...
-
データ抽出の速度について
おすすめ情報