• 締切済み

アナライズとインデックス作成どちらが先か?

Oracle10gで、テーブルにデータを入れた後、以下はどちらを先に実行すべきでしょうか。 ・アナライズ(統計情報の取得) ・プライマリキーとインテックスの作成

みんなの回答

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

> 先に統計情報を取得してからインデックス(プライマリキー設定も含む)を > 作成すれば、インデックスの統計情報が取得されないことになってしまいます。 これは誤りでした。表の統計情報が存在していれば索引作成時には 索引の統計情報が自動的に取得されるようです。 明示的に取得することが望ましいことには変わりありませんが。

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.4

補足すると、実運用に入ってからも ・定期的なアナライズ ・特定のSQLで遅延が起きていないかの確認 ・INDEXが使用されているかの監視 が必要になります。

全文を見る
すると、全ての回答が全文表示されます。
  • entree
  • ベストアンサー率55% (405/735)
回答No.3

先に統計情報を取得してからインデックス(プライマリキー設定も含む)を 作成すれば、インデックスの統計情報が取得されないことになってしまいます。 それは意図することではないでしょうから、 1. プライマリキーとインテックスの作成 2. アナライズ(統計情報の取得) が良いのではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 あえて順番をと言うなら、  ・プライマリーキーの作成(本来、テーブルを作成した時にセットで作成すべきもの。何がプライマリーキーになるかは、テーブル設計をした段階で必然的に決まっているはず。普通は、create table文のprimary key句は、オプションでなく必須と思った方が良いくらいです。)  ・データの投入。  ・アナライズ(この結果で、どのフィールドに追加インデックスをつけるかを分析・決定する。)  ・インデックスの作成  ・定期的なアナライズ(これは、オプティマイザーのための統計情報更新です。)  でしょうか。これより更に前の業務分析がきっちり出来ていれば、テーブル設計とセットである程度のインデックス構成は浮かび上がっているものですけどね。その場合は、ある程度のインデックス生成はテーブル生成とセットでしょうね。  特に、ユニークインデックスに関しては、効率化よりも、制約として重要です。その筆頭がプライマリーキーで、これが決定されていないと、外部制約などがくめなくなってしまいます。当然ですが、制約は、データを投入する前に決定と設定がなされている必要があります。(制約が一番仕事をするのはデータの投入時ですからね。後で制約をつけた時にデータエラーを指摘されるより、データ投入時に見つけてもらった方が良いに決まってますから。)

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

通常は、事前にデータ分析して検索条件、データの偏り、カーディナリティを調べてから ・プライマリキーとインテックスの作成 ・アナライズ(統計情報の取得) だと思います。 どのインデックス使うのが有効かなどを統計情報から得るのがアナライズの目的ですから。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • インデックス作成後アナライズは必要か?

    oracle10g でインデックスを作成すると、インデックスの 統計情報は自動的に取得されているようです。 インデックス作成後にアナライズ(統計情報の取得)は不要という認識で間違いないでしょうか?

  • アナライズとヒント句

    sqlのselectが長時間にわたって終了しないのでヒント句でHASH指定をしたところ、アナライズのサンプルレートにより効いたり、効かなかったりします(実行計画で確認)。こんなことはあるのでしょうか。 ちなみにoracle10G-R2です。

  • アナライズの自動実行

    10gを使用しています。 先輩からDDL実行後にアナライズが自動実行されると聞いたのですが、どのパラメータを参照して設定を確認すればよいのでしょうか? optimizer_dynamic_samplingにて設定した場合はDDLに限らず、SQLを実行した際に設定しているレベルで自動実行されるのかなとは思ったのですが。。。 先日indexをdropして再作成を行ったのですが、どうもアナライズはされていないようだったので(アナライズを行ったらレスポンスが著しく改善した) どうぞご教授ください。

  • oracle:統計情報とテーブル削除

    oracle10gを使用しております。 統計情報について質問させていただきます。 テーブルAについて、[statistics = none]を指定しExportします。 統計情報取得コマンドを実行します。 analyze table TABLE_A compute statistics; 後に、テーブルAを削除します。 drop table TABLE_A; バックアップファイルを基に、テーブルAをImportします。 このとき、テーブルAの統計情報はExport実行時と同じになるのでしょうか?

  • JOINを使ったSQL文を作成しようとしています。

    JOINを使ったSQL文を作成しようとしています。 以下の様な3つのテーブルがある場合のSQL文を教えて下さい ※勉強の為、適当なテーブルを作成しましたが、やりたい事は  JOINの中に更にJOINさせたSQL文を作成したいと思ってます 表A  USER_ID(プライマリキー)  NAME 表B  USER_ID(プライマリキー) ※表A.USER_IDと紐着く  BUMON(プライマリキー)  TERM(プライマリキー) 表C  BUMON(プライマリキー) ※表B.BUMONと紐着く  TERM(プライマリキー) ※表B.TERMと紐着く  MEMBER 【取得したい項目】  表A.USER_ID 【抽出条件】  表CのMEMBERの値が'10','20'以外(である表AのNAMEを取得)

  • Oracleでテーブルを作成する際に、インデクスの作成先を指定したい。

    以下のようにテーブルを作成しようとしてます。 CREATE TABLE TEST_USER.M_USER ( ID char(4), NAME varchar2(40) NOT NULL), CONSTRAINT PK_USER PRIMARY KEY(ID) ); さて、プライマリキーを定義しているので、インデクスが作成されるはずです。 この作成先のテーブルスペースを指定したいのですが、方法が解りません。 CREATE TABLEの紹介をしているサイトにものっていなくて、途方にくれています・・・。 CONSTRAINT句を使えばいいのでしょうか?

  • CSE PostgreSQLのテーブルにプライマリキーを作成する方法

    現在、CSEを使いPostgreSQLのテーブルから 一つの行を消そうとしたところ、 『更新対象のテーブルにプライマリキーが存在しない為、更新処理を行う事ができません。 更新処理を行うには、更新対象のテーブルにプライマリキーが定義されいる必要があります。』 と言うようなエラーメッセージが出てきて困っています。 どこを調べてもCSEでのプライマリキーの作成方法は載っていないのですが、そもそも『CSEでのプライマリキーの作成』は不可能なのでしょうか? もし、CSEで、もしくは他の方法で既存のテーブルにプライマリキーの定義の仕方を知っている方いましたらご教授下さい。 それか、PostgreSQLのデータの一部を(テーブルの内容全てではなく一行だけ)削除する方法ありましたらそちらもご教授下さい。 よろしくお願いします。

  • インポートするたびに所要時間が延びます

    Oracle10.2を使っています。 全テーブルをトランケートした後、インポートとアナライズをするという処理を何度か実行していますが、最近急に時間がかかるようになり、実行するたびにどんどん所要時間が延びています。 当初は10数分だったのが、直近では9時間です。 延びているのはインポートで、トランケートとアナライズは問題ないようです。 サーバの再起動もやってみましたが、一向に改善しません。 このような現象を経験したことのある方はいらっしゃらないでしょうか?

  • 画像に何が写っているかを示すテーブルを作ったのですが。。

    画像に何が写っているかを示すテーブルを作りました。 img_priは画像のプライマリキー、 object_priは写っている"物"のプライマリキーです。 テーブルは以下です。 img_pri | object_pri --------------------- 3    |      4 3    |      7 3    |      8 5    |      4 5    |      7 6    |      1 8    |      5 例えば一行目は、3というプライマリキーを持つ画像に 4というプライマリキーを持つ"物"が含まれています。 このとき、4と7のプライマリキーを持つ"物"を含んでいる画像のプライマリキー(上のテーブルだと3と5) を取得したいのですがどうすれば良いでしょうか? また、4と7のプライマリキーを持つ"物"しか含んでいない画像のプライマリキー(上のテーブルだと5) を取得したいのですがどうすれば良いでしょうか? MySQLのバージョンは3.23.58です。 どなたかご指導お願いいたします _ _

    • ベストアンサー
    • MySQL
  • Oracle8iでテーブルをエクスポートする方法

    Oracle10gを使用しています。Oracle8iから特定のテーブルを抽出してOracle10gに入れようとしましたが、Oracle10gのexpコマンドは互換性の問題で8iに対して使えませんでした。そこでOracle8iのexpコマンドを使用しようかと考えましたが、テーブルごとのエクスポートができないとのことで不可(データベースが大きすぎるため、そもそも8iのExpコマンドを実行できる権限を持っていないのでできませんが)。 仕方がないのでExpコマンドはあきらめて、テーブル定義抽出→データをCSVまたはSQLで抽出という手順でデータを移そうかと考えています。データの抽出はできたのですが、テーブル定義の取得は10gで使えるdbms_metadata.get_ddlが使用できないので取得できずにこまっています。8iでテーブル定義を取得するにはどうしたらいいのでしょうか? なお当方8iのデータベースのSystem/Sys権限を所有していないません。また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

保護猫の耳カット基準について
このQ&Aのポイント
  • 保護猫の耳カットの基準についてお聞きします。避妊去勢処置済みの目印として耳をカットすることは知られていますが、リターンや里親探しの場合もカットが行われることがあります。なぜカットが必要なのか、その意義や理由について理解したいです。
  • 避妊去勢手術で耳をカットされている保護猫について知りたいです。成猫のTNRや子猫の保護において、どのような場合に耳カットが行われるのか、その目的や効果について知りたいです。また、カットによって保護猫の安全や管理が向上する点についても教えていただけると嬉しいです。
  • 保護猫の耳カットはなぜ行われるのでしょうか?耳カットにはどのような意義や理由があるのか詳しく知りたいです。また、リターンや里親探しの場合においてもカットが必要な理由やメリットについて教えていただけるとありがたいです。保護猫の避妊去勢手術と耳カットの関係についても知りたいです。
回答を見る