ORACLE初心者で索引について勉強しています。
そこでORACLEの索引(Bツリー)検索について2点程質問させていただきます。
(1)索引を用いるとI/O処理が少なくなりアクセスが高速になるということはわかったのですが、そのI/O処理とはプロセスとメモリ間のやりとりに関するI/O処理という認識で間違いないのでしょうか?
(2)索引付きと索引なしのカラムを抽出条件にして検索した場合、まず索引付きのカラムから検索を行い、そのROWIDを元に索引なしのカラムのデータを取得して対象データかどうかの判断を行うのでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
(1)索引を用いるとI/O処理が少なくなりアクセスが高速になるということはわかったのですが、そのI/O処理とはプロセスとメモリ間のやりとりに関するI/O処理という認識で間違いないのでしょうか?
プロセスとディスク(またはキャッシュされたメモリ)との間のI/O処理
というほうがあっていると思うのですが。
・・・「プロセスとメモリ間」というと正しくないようにしか聞こえませんが、
たまたま、すべてメモリにキャッシュされていると、ディスクアクセスがなかったりするので
完全な間違いとは言い切れないけど、大抵の場合は間違い、って思います。
(2)索引付きと索引なしのカラムを抽出条件にして検索した場合、まず索引付きのカラムから検索を行い、そのROWIDを元に索引なしのカラムのデータを取得して対象データかどうかの判断を行うのでしょうか?
>まず索引付きのカラムから検索を行い、そのROWIDを元に索引なしのカラムのデータを取得して
のパターンは、RangeScanというタイプになり、Oracleがそれが早いと判断したら、そういう処理が
動きます。
「そのROWIDを元に索引なしのカラムのデータを取得して対象データかどうかの判断」をするのか
「索引付きのカラムから対象を抽出して、抽出したデータ(select句内の項目と
where句内の項目などなのか詳細不明)から索引なしのカラムのデータが一致する
物のみに絞り込んでいる」のかは不明。(Oracle内部の処理仕様の話なので。。。)
No.1
- 回答日時:
こんにちわ
> I/O処理とはプロセスとメモリ間のやりとりに関するI/O処理
目的のデータに辿り着くまでのDisk I/O の事です。
索引は内部的にキー項目でソートされているため、目的のデータに
辿り着くまでの読込み量を減らせる訳です。
> 索引付きと索引なしのカラムを抽出条件にして検索した場合
これは状況によります。
索引のアクセスと、ROWID からのデータへのアクセスは1ブロックづつ
読込み処理が行われます。
これに対して、索引を使わないFull Scan は複数ブロックづつまとめて
読込みが行われます。
そのため、テーブルのサイズが小さい場合は、索引を使うよりもFull Scan
させた方が高速な場合があります。
もう1つ、B-Tree 索引の場合大量のデータの中から少ない件数のデータを
見つける場合は非常に効率的ですが、検索条件に該当する件数が多い
(全体の10%以上ヒットするとか) 場合は逆に非効率になります。
その辺の所を判断して、オプティマイザが適切 (と思われる) な実行計画を
作成してくれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- その他(ブラウザ) 教えて!gooなのですが、投稿者名で検索されたら過去の質問が出てきてしまいますか? 3 2023/03/13 02:51
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- その他(悩み相談・人生相談) 過去に知恵袋で同じような質問を何回もしていて、Google検索に出てくることで悩んでいます。 相談内 2 2022/09/05 22:57
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDEXの無効化
-
Viewにインデックスは張れ...
-
SQL*Loaderで、データを加工し...
-
文字列中のスペースを排除する...
-
SQLの処理速度改善にむけて
-
インデックス作成後アナライズ...
-
アナライズとインデックス作成...
-
主キー以外の項目にNotNull制約...
-
可変個数のデータはどう納める?
-
異なるスキーマからデータを抽...
-
Access レコードを追加できませ...
-
データを削除しても表領域の使...
-
Data Pump で大量データインポ...
-
CLOB型へのINSERT
-
select insert 句
-
postgreSQLのint型は桁数指定が...
-
大量データの取得処理について
-
ACCESS 複数テーブル・複数フィ...
-
ExcelをAccessにペーストエラー
-
スキーマの削除、スキーマオブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
可変個数のデータはどう納める?
-
アナライズとインデックス作成...
-
文字列中のスペースを排除する...
-
インデックス作成後アナライズ...
-
索引の再構築をすべき?
-
Oracle Databaseのインデックス...
-
主キー以外の項目にNotNull制約...
-
Oracleのあいまい検索について
-
データ表示順序
-
OracleTextの索引再構築について
-
SQL*LoaderとInsertの違いについて
-
【ANALYZE】 テーブル・インデ...
-
IN 句ではインデックスが使用さ...
-
テスト環境と本番環境で、DBか...
-
目的のインデックスが使用され...
-
論理読み込みブロック数とは?
-
インデックスの階層数によるパ...
おすすめ情報