Slide 20
Slide 20 text
SELECT⽂で降順指定をした場合の索引の利⽤
Oracle DatabaseのBツリー索引のデータ格納を降順にする
問合せ処理において降順ソートをおこなう場合に考慮
• デフォルト(昇順)
• ⽂字データ: 各バイトに含まれるバイナリ値の順序
• 数値データ: 最⼩の数から最⼤の数へ
• ⽇付データ: 古い値から新しい値へ
• DESCキーワードを指定することで上記デフォルトの逆順に索
引データを格納
降順索引の作成例
ユースケース
• order by句の指定に昇順(ASC)、降順(DESC)指定が
混在している場合に、コンポジット索引を活⽤することで
ソート処理を減らしたい
• デフォルトの昇順索引においても、Bツリー
索引のリーフ・ブロックは双⽅向のリンクを
持っているため、ソート対象となる全ての
列が降順指定ならば、そのまま降順ソート
で利⽤
降順索引
Copyright © 2024, Oracle and/or its affiliates
20
CREATE INDEX sales_idx
ON sales(sale_date ASC, product_id DESC);
SELECT sale_date, product_id, quantity FROM sales
WHERE sales_date > TO_DATE('20240101','YYYYMMDD')
ORDER BY sales_date DESC, product_id DESC;
2024/01/01, 15, rowid
2024/01/01, 21, rowid
2024/01/01, 33, rowid
2024/01/02, 16, rowid
2024/01/02, 21, rowid
SELECT sale_date, product_id, quantity FROM sales
WHERE sales_date > TO_DATE('20240101','YYYYMMDD')
ORDER BY sales_date ASC, product_id DESC;
2024/01/01, 33, rowid
2024/01/01, 21, rowid
2024/01/01, 15, rowid
2024/01/02, 21, rowid
2024/01/02, 16, rowid
• 問合せのソート指定に含まれる列の昇順、降順が混在していると、
デフォルトの索引では条件絞り込みのみで使⽤され、別途ソート処
理が必要となる
• 左の降順索引の作成例の索引があれば、索引をソート処理で使⽤
リーフ・ブロック
(デフォルト)のイメージ
リーフ・ブロック
(⼀部降順)のイメージ