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

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

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

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

Q&A

解決済

2回答

5152閲覧

索引にフラグを追加した際のパフォーマンス

shogoism

総合スコア35

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

0グッド

0クリップ

投稿2017/06/02 07:10

よく、フラグ系のカラムに索引を貼っても効果がない、という文を目にします。

ただ、チューニングアドバイザが時折「このフラグを索引に追加しなさい」と提案することがあります。

複合索引の場合であれば、先頭でなければ一定の効果が得られるという理解で良いのでしょうか?

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

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

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

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

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

guest

回答2

0

SQLの条件ではいかに手っ取り早く必要なデータを絞り込めるかが、パフォーマンスに大きく影響します。
そのフラグがON句やWHERE句に含まれるなら、そのフラグを索引に追加することでパフォーマンスが改善されるかもしれません。

お使いのOracleのバージョンはきちんと統計情報を取得しているなら、index skip skan が有効に働いてくれることがありえます。フラグを索引に追加する前後で実行計画を確認したり、処理時間を実測しましょう。
よほど大きなデータでなもなければ、フラグを索引に追加してもパフォーマンスが改善しなければ、索引からフラグをすれば良いことです。

投稿2017/06/02 07:58

Orlofsky

総合スコア16415

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

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

shogoism

2017/06/03 07:44

ご回答いただき、ありがとうございました。 ベストアンサーは、とても悩んだのですが最初の回答にさせて頂きました。 INDEX SKIP SCANの検証記事、とても勉強になりました。
guest

0

ベストアンサー

一般的にインデックスは全件の3割以下がヒットするときに有効に動作します。
フラグはtruefalseの2種類しかバラつきがないため、
有効に動作するケースが少ないという見解です。

ただし、true(or false)の件数が極端に少ない場合に
条件でtrue(or false)を指定すると有効にインデックスが動作します。
逆に件数が極端に多い場合はインデックスを使わず全件検索するのでインデックスは意味をなしません。

要するに100万レコード中にtrueのレコードが30万レコード以下であれば、
trueを指定した時に有効に検索できます。
ただしfalseを指定するとインデックスは使われませんので、パフォーマンスが著しく悪化するでしょう。
またtrueのレコードが30万レコードを超える場合、どちらで検索してもインデックスが使われない可能性があります。

※3割というのは大体の目安です。

複合インデックスでも必ず極端に少ない値で検索するのであればパフォーマンスも問題ないですが、
極端に多い場合はインデックスが使われなくなるので、おすすめできません。

投稿2017/06/02 07:52

szk.

総合スコア1400

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

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

shogoism

2017/06/03 07:48

ご回答いただき、ありがとうございました。 次回、チューニングアドバイザーに同様の提案をされたら、ご回答の内容を意識して考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問