Oracle 降序索引
降序索引
降序索引是8i裡面新出現的一種索引,是B*Tree的另一個衍生物,它的變化就是列在索引中的儲存方式從升序變成了降序,在某些場合下降序索引將會起作用。舉個例子,我們來查詢一張表並進行排序:
SQL> select * from test where a between 1 and 100 order by a desc,b asc;
已選擇100行。
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
1 0 SORT(ORDER BY)(Cost=2 Card=100 Bytes=400)
2 1 INDEX (RANGE SCAN) OF 'IND_BT' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)
這裡優化器首先選擇了一個索引範圍掃描,然後還有一個排序的步驟。如果使用了降序索引,排序的過程會被取消。
SQL> create index test.ind_desc on test.testrev(a desc,b asc);
索引已建立。
SQL> analyze index test.ind_desc compute statistics;
索引已分析
再來看下執行路徑:
SQL> select * from test where a between 1 and 100 order by a desc,b asc;
已選擇100行。
Execution Plan(SQL執行計劃,稍後會講解如何使用)。
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
1 0 INDEX (RANGE SCAN) OF 'IND_DESC' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)
我們看到排序過程消失了,這是因為建立降序索引時Oracle已經把資料都按降序排好了。
另外一個需要注意的地方是要設定init.ora裡面的compatible引數為8.1.0或以上,否則建立時desc關鍵字將被忽略。
相關推薦
Oracle 降序索引
降序索引 降序索引是8i裡面新出現的一種索引,是B*Tree的另一個衍生物,它的變化就是列在索引中的儲存方式從升序變成了降序,在某些場合下降序索引將會起作用。舉個例子,我們來查詢一張表並進行排序: SQL> select * from test where a
關於Oracle降序索引的定意及回溯
降序索引本質上是FBI,其具體定義可以通過 user_ind_expressions 或dba_ind_expressions 查詢。那麼同樣的,降序索引只有在CBO下才能被使用。Connected to Oracle9i Enterprise Edition Release
Oracle 索 引 的 分 類 :降序索引和點陣圖索引
降序索引 降序索引是8i裡面新出現的一種索引,是B*Tree的另一個衍生物,它的變化就是列在索引中的儲存方式從升序變成了降序,在某些場合下降序索引將會起作用。舉個例子,我們來查詢一張表並進行排序: SQL> select * from test where a
Oracle 程式設計藝術--降序索引讀書筆記
1.11gr2資料庫的索引預設排序是asc,不是desc。 準備測試資料 create table test as select rownum as objectid,object_name from all_objects; 建立預設索
[20181124]關於降序索引問題2.txt
[20181124]關於降序索引問題2.txt--//連結:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函式sys_op_descend.--//前面已經提到結尾加入FF,為了排序的需要。這樣導致chr(0),以及後續的chr(
[20181124]關於降序索引問題3.txt
[20181124]關於降序索引問題3.txt--//連結:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函式sys_op_descend.--//連結:http://blog.itpub.net/267265/viewspace
mysql 8.0降序索引
MySQL支援降序索引:DESC在索引定義中不再被忽略,但會導致按鍵降序儲存鍵值。而且只有InnoDB儲存引擎支援降序索引例如:建立表CREATE TABLE test.t (id INT NOT NULL auto_increment PRIMARY KEY,c1 INT, c2 INT);插入資料INSE
降序索引的適用場景
Oracle預設的索引是升序的, 同時也支援降序索引. 一直沒想明白為什麼要支援降序索引,因為索引是用來查詢的,只要是排序後的查詢都是可以使用折半查詢的(使用平衡樹會更快些),根本不關心是升序還是降序排列. 查了多方資料也沒找到原因, 最近想到了一個可能的場景. 就是如果查詢結果是需要降序排列,這個時候排
MySQL 8 新特性之降序索引底層實現
什麼是降序索引 大家可能對索引比較熟悉,而對降序索引比較陌生,事實上降序索引是索引的子集。 我們通常使用下面的語句來建立一個索引:
oracle order by 排序之降序 null 排最後
1 表資料person_info id name age 1 qq 23 2 ee &
Oracle之按工資降序查出表中第5到第10條的記錄的方法
1.找出emp表中第5到10條記錄並按降序排列 1.1 SELECT * FROM emp ORDER BY sal DESC; //查出表中所有資料並按降序排列 1.2 SELECT ROWNUM r,s.* FROM (SELECT * FROM emp OR
Oracle 子查詢,按降序排列,取前n條
比如,有一個student 表: id student_name 1 s1 2 s2 03
使用stackOfIntegers實現降序素數
number stack class pop pri ack == [] private 使用stackOfIntegers實現降序素數 代碼如下: package day06; public class TestSU { public static void main(
angularJS可以實現常常看到購物車中的升序降序效果
back adding pla pac doc 升序降序 tle 下標 sco { "xinxi":[ {"id":100,"name":"baobo","age":12}, {"id":99,"name":"paopo","age":18}, {
降序和升序 的區別,就在於這個
int console emp using lda con esp ++ 升序 原文發布時間為:2009-03-18 —— 來源於本人的百度文章 [由搬家工具導入]原理:升序和降
Tingq 模糊查詢 共多少條數據 最大、小、平均、求和值 升、降序
string sys post nat sender type asp idt acl 頁面代碼 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="
Oracle復合索引+空值的索引使用問題
圖片 .com 討論 bubuko dep spa tree not nbsp 昨天在QQ群裏討論一個SQL優化的問題,語句大致如下: select A,min(B) from table group by A;--A,B都沒有not null約束,A列無空值,B列有空值
Python list降序排序
doc -- pos light 參考 als sig pass 接收 test = [6,1,2,3,4,5] a = sorted(test,reverse=True) print a 結果如下: [6, 5, 4, 3, 2, 1] 你可以參考下sorted,裏面
python小練習:給定一個非空且為正整數的列表 按重復次數 降序排列輸出
class 數字 轉換成 原來 小練習 顯示 python index 去重 假設有個列表 a=[1,1,1,2,2,4,5,5,5,5] (非空且為正整數) 那麽根據要求 最終輸出的形式為 5,1,2,4 (按重復次數 降序排列輸出) 代碼實現及解釋: a=[1
降序排列
message 姓名 edi pos ati str new dia += public static void main(String[]aaa){ String [] name = new String[5]; int [] sala