• ベストアンサー

INDEX 見積もりについて

joihの回答

  • ベストアンサー
  • joih
  • ベストアンサー率35% (37/105)
回答No.1

INDEX の容量計算は ここを参考にすると良いでしょう。 「領域サイズ見積シート」で簡単に見積もることができます。 http://otndnld.oracle.co.jp/skillup/oracle9i/4_1/index.html 見積の考え方も書いてあるので勉強になります。 USER_INDEXES は 自分が定義した値が入ってますので、見積もりには使えません。 どちらかといえば、USER_IND_COLUMNS で項目長を見たほうがいいです。

wsy920
質問者

お礼

参考になりました。ありがとうございます。

関連するQ&A

  • 同じテーブル設計にしたい

    CREATE TABLE 見積データ ( 見積番号 VARCHAR2(7) NOT NULL, 得意先コード VARCHAR2(7), CONSTRAINT 見積データ_KEY PRIMARY KEY ( 見積番号 ) ) STORAGE ( INITIAL 3020K NEXT 302K PCTINCREASE 0 ) TABLESPACE KNDN2; ALTER INDEX 見積データ_KEY REBUILD TABLESPACE KEC_IND STORAGE ( INITIAL 19K NEXT 2K PCTINCREASE 0 ); ******** 上記のようなテーブル設計のSQL文がありますが、私が作ったものではなく都合によりこのテーブルを create table A2 as select from A; 上記のようなコピーを行いました。 あたらしいテーブルでも CONSTRAINT 見積データ_KEY PRIMARY KEY ( 見積番号 ) ) STORAGE ( INITIAL 3020K NEXT 302K PCTINCREASE 0 ) TABLESPACE KNDN2; ALTER INDEX 見積データ_KEY REBUILD TABLESPACE KEC_IND STORAGE ( INITIAL 19K NEXT 2K PCTINCREASE 0 ); この制約と同じものを当てたいのですが、あとから追加するにはこの構文をどのように変えればいいのでしょうか?

  • db2 index テーブルについて

    いつもお世話になっております。 DB2について、質問です。 テーブルにcsvファイルをインポートしようとしたところ 割り込みエラーが発生してしまいました。 詳しくはわかっていないのですが、 原因として考えられることとして indexテーブルが破壊されているのではないかと 思われます。 そこで、indexを使用しているかどうかについては 下記コマンドで確認しました。 describe indexes for table [user].[table] show detail ただ、indexテーブルが壊れているかどうかはわかりません。 どうすれば、わかりますでしょうか。 大変申し訳ございませんが ご教示くださいますよう宜しくお願いいたします。

  • 【ANALYZE】 テーブル・インデックス数が多い

    過去の質問を検索しても該当するものが無かったのでご質問させていただきます。 現在、オプティマイザ(コストベース)について調べています。 ANALYZEコマンドを使用して、テーブルおよびインデックスの 統計情報を取りたいのですが、以下のコマンドのようにテーブル名もしくはインデックス名を指定することしかできないのでしょうか? ANALYZE TABLE テーブル名 COMPUTE STATISTICS; ANALYZE INDEX インデックス名 COMPUTE STATISTICS; テーブル数及びインデックス数が非常に多いため、上記の方法では手間がかかります。 もう少し効率の良い方法を探しているのですが、ご存知であれば教えてください。 よろしくお願いいたします。

  • ORACLEのインデックスについて

    現在、ORACLE9を使用しているのですが INDEXについて理解できないことがあったので 教えてください。 組織、社員という2つしか項目を持たない 従業員という表があり600件ほどのデータがあります。 変更前は、 ・組織、社員にユニークインデックスは作成されていた。 ・600件ほどのデータの組織は全て同一。 となっており、その状態で select * from 従業員 where 組織 = 'ALL' and 社員 = '001' を流すとFULL SCANになっていました。 FULL SCANを回避できないかと思い、社員のみのインデックスを 追加し(* 一番下にインデックス追加時のSQLをはっています)  select * from 従業員 where 組織 = 'ALL' and 社員 = '001' を流すと追加したインデックスを読んでいました。 既に作成されていたユニークインデックスと異なるインデックスが 追加されたのかと思い、DBA_INDEXESの中を確認しましたが 異なっているのは、 ・UNIQUENESS ・INITIAL_EXTENT(ユニークインデックスは24576、  追加したインデックスは40960) ・LEAF_BLOCKS(ユニークインデックスは3、  追加したインデックスは2) の3点のみでした。 なぜこのような動きになるか理解できず、今後の対応に 迷っています。 ・原因 ・調査したらいい場所 ・参考資料 などがありましたら教えてください。 よろしくお願いします。 (*) インデックス追加時のSQL文は、create index 従業員A on 従業員 (社員) tablespace index storage (initial 40000 next 100000 maxextents unlimited pctincrease 0) pctfree 10となっています。

  • 検索条件が複数の場合のインデックスの張り方

    Mysql5.0 + ASP.NETで開発中です。 サーバーはWindows2003サーバーです。 とある検索サイトを作っていますが、1テーブルのフィールド数が80くらいあります。 また、レコード数は常時100万件程度です。 このテーブルの検索を行うときに、ユーザーが任意の検索条件を設定できるような画面なのですが、実際に検索に使用されるフィールド数は最大で10です。 例えば、where a = 999 and b = 999 や where a = 999 and c = 999 and f = 999 や where b = 999 and d = 999 and f = 999 and g = 999 など、where句で使用されるフィールドがユーザーの指定により常に異なります。(999は任意の値です) ORDER BYに使用されるフィールド数は3です。 現状ではインデックスは張っていないため、かなり検索速度が遅いため、インデックスを張りたいのですが、どのような張り方がいいのかがわかりません。 このような場合、インデックスを張る方法として、どの方法が一番よいのでしょうか? 1.検索に使用される10つのフィールドに1つずつ張ればよい 2.検索に使用される10つのフィールドとソートに使用される3つのフィールドに1つずつ張ればよい 3.where句の組み合わせを全て考えて複合インデックスを張る必要がある。 4.その他 また、80フィールドのテーブルを適当に4つくらいに分けて、検索時に結合すれば早くなったりするものでしょうか?

  • mysqlのインデックスについて質問です。

    mysqlのインデックスについて質問です。 http://archiva.jp/web/server-side/sql_02.html に、 『mysqlでは1つのクエリ実行で、1つのテーブルにつき1つのインデックスしか使用できない』 とあります。 よく以下のようなテーブル定義を見かけますが、 CREATE TABLE IF NOT EXISTS `data` ( `id` int(10) NOT NULL default '0', `user_id` int(10) NOT NULL default '0', `file_id` int(10) NOT NULL default '0', `name` text collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; idとuser_idを条件にするクエリであれば、上記制約を満たすため、 KEY `id_user_id_idx` (`id`,`user_id`) の複合クエリを定義すれば良いのでしょうか? また、idとuser_idとfile_idを条件にするクエリも考慮に入れた場合、 テーブル定義は以下のようにするのでしょうか? CREATE TABLE IF NOT EXISTS `data` ( `id` int(10) NOT NULL default '0', `user_id` int(10) NOT NULL default '0', `file_id` int(10) NOT NULL default '0', `name` text collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `id_user_id_idx` (`id`,`user_id`), KEY `id_user_id_file_id_idx` (`id`,`user_id`,`file_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 最後に、create table 時のインデックスの指定は、 INDEX `user_id` (`user_id`), のようにもできますが、INDEXとKEYの違いは何かあるのでしょうか。

    • ベストアンサー
    • MySQL
  • MySQLのインデックスについて

    MySQLのインデックスについて 以下のSQLにてお聞きしたいことがあります。 SELECT * FROM table1 WHERE num = '1' numはint型でインデックスを作成済の列なのですが、 問い合わせでは'1'のように文字列型で条件指定しています。 この場合、numに対するインデックスは効くでしょうか? よろしくお願い致します。 追伸 なぜこのような質問をさせて頂くかと申しますと、 私は開発環境でZend Frameworkを使用しておりまして、 その中のZend_Dbを使用しているのですが、 名前つきパラメータを使用してSQLを実行した場合に、 実際の実行されているSQLではどのパラメータも、 シングルクォーテーションで囲われているのではと思うんです。 以前、SQL実行に失敗して出力されたエラーメッセージの一部に、 実際に実行されたSQLが記述されていたのですが、 数値型の列もシングルクォーテーションで囲われていたんです。 もしかしたら名前つきパラメータを使用すると、 すべてのパラメータが文字列型扱いされているのではと思い、 こちらに投稿させて頂きました。

    • ベストアンサー
    • MySQL
  • CakePHP Undefined index

    CakePHP(cake_1.2.1)にて、ユーザーログイン機能を作成しようとしてます。 class UsersController extends AppController{ var $name = 'Users'; var $uses = array('User'); // Userモデルを使用 var $needAuth = true; // ログイン必須のフラグ /* * ログインページ */ function login() { // ページタイトルの設定 $this->pageTitle = 'Web-local.community「local.SNS」'; // データが送られてきたら if(!empty($this->data)){ // パスワードを暗号化 $this->data['User']['pwd'] = md5($this->data['User']['pwd']); // 入力された[id]と[pwd]がデータベースにある場合のみ[$user_data]に値が入る $user_data = $this->User->findByEmailAndPwd($this->data['User']['email'], $this->data['User']['pwd']); ・・・ というコントローラーをWebサイトの先人様のを参考にして試作しているのですが、あらかじめ作成したusersテーブルに登録しておいたユーザーのメールアドレス、パスワードを入力して、ログインボタンを押すと、 Notice (8): Undefined index: User [APP\controllers\users_controller.php, line 18] Notice (8): Undefined index: email [APP\controllers\users_controller.php, line 20] というエラーが出て困ってます。"User"、"email"は、知りませんと言っているのでしょう。 モデル等の宣言の箇所で、 // var $name = 'Users'; // var $uses = array('User'); // Userモデルを使用 あるいは、 // var $name = 'Users'; var $uses = array('User'); // Userモデルを使用 あるいは var $name = 'Users'; // var $uses = array('User'); // Userモデルを使用 とコメントアウトしても、前記エラーは変わりません。Webをいろいろ検索しても、解決策が見当たらず、投稿させていただきました。何か、設定が抜けているのでしょうか?どなたかすみませんが、教えてください。

  • 処理速度の見積もり時間について。

    処理速度の見積もり時間について。 Oracle 10gを使用し開発を行っています。 処理速度について伺いたいことがあり、投稿致しました。 現在、PL/SQLを使用しCSVファイルよりデータを読み込み、 テーブルをチェックし、条件に合致するようならデータのUPDATEを 行うという処理をしています。 このCSVファイルのデータは何百万件と大量のデータで、 処理速度を懸念しております。 そこで処理速度についてですが、どのようにすれば見積もることが できるのでしょうか? 具体的な方法をご教授頂けるとありがたいです。 そもそもCSVファイルを一行ずつ読み込んで、テーブルに対し UPDATEを掛けるというやり方自体間違っているのでしょうか? 一時テーブル等を使用した方が良いのではないかとも思うのですが・・・。 以上、宜しくお願い致します。

  • エクセル・index関数

    エクセル2000で作った料金表の料金を表示させるには どうすればいいでしょうか? 手順として考えているのは (1) 総当り表のように、出発地と目的が交差したセルに  その区間に該当する料金を入れた表を作る。 (2) 区間の駅名を「データ」の中の「入力規則」機能を  使用して、プルダウンメニュー?(オートフィルタみたいな  感じ)でそれぞれ行き先・目的地をクリックだけでセルに  入力出来るようにする。 (3) 行き先・目的地を入れると(1)で作った料金表から   該当区間の料金を引っ張って表示できるように   関数を入力する。 なのですが、手順(2)まではできましたが(3)で使用する関数を どうすればいいのかわかりません。 関数には日本語が使えないので駅名にそれぞれ数字を割り当てて、 まず(2)で選択した駅名を数字に置き換える関数を入れたセルを 作ってから・・・と思ったのですがindexの関数がどうしても 正しく入れられません。 説明も的確ではないかもしれませんが、かなり困っています。 全くやり方が違っているかもしれません。 ご指摘・ご指導よろしくお願いします。