質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

2310閲覧

bitmap索引を使用する際の適切なカーディナリティ数について

statshu

総合スコア20

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/10/18 04:28

下記マニュアルを確認するとbitmap索引はカーディナリティ数が少ない列に対して設定するのが効果的と記載があります。
確かに性別の「男」、「女」やステータス値がある列に対してbitmap索引を作成されている例を良く見ました。
具体的な目安としてどのくらいの個別値のある場合にb-tree索引ではなくbitmap索引を使用した方が良いのでしょうか。

https://docs.oracle.com/cd/E16338_01/server.112/b56309/indexes.htm

ビットマップ索引は、表の行数に対する個別値の数の比率が小さい列に対して最も効果的です。

以上、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

bitmap索引はON句WHERE句の条件によってはアクセスが早いですが、インデックスを更新する負荷がおおきいため、頻繁に更新されるテーブルには向きません。
ビットマップインデックスについて調べた
EXPLAIN PLAN で実行計画を確認したり、処理時間を実測したりして、適切な索引を選択します。

投稿2017/10/18 04:49

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

statshu

2017/10/18 05:45

参照系テーブルの索引を想定しています。 チューニング時に実行計画を見比べて最適な索引を…というのは理解できます。 ただ、索引設計時に実行計画を見つつ最適な索引を付与というのは方法として適さないと感じています。 したがって、具体的なカーディナリティの目安値や索引付与方針例を知りたかったのです
Orlofsky

2017/10/18 06:59

いちおうON句WHERE句で記述される列が索引の対象になります。索引が多くなると索引を書き換える負荷も多くなります。 パフォーマンスの改善方法は索引の設定だけではありません。きちんと統計情報を取得しているか?対象データが多ければ PARALLELヒント、USE_HASHヒントなどを使ったり、より効率的にアクセスできるようテーブル構造を変えたり、いろいろな方法も考えます。 http://www.oracle.com/technetwork/jp/database/articles/tsushima/index.html 辺りが参考になるでしょう。 許容できるレスポンス時間はそのシステムによって違います。お金はかかりますが、パフォーマンス・チューニングの熟練者に改善を依頼することも必要かもしれません。 Oracle側でこれ以上改善できない場合は、本当にクリティカルなシステムならハードウェアにお金をかけることも考えます。
statshu

2017/10/18 07:08

パフォーマンス改善方法を質問していたわけではありません。 言葉足らずかもしれませんが、bitmap索引を使用する場合の具体的なカーディナリティの目安値や索引付与方針例を知りたかったのです。 ともかくありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問