使用倒序索引(index desc),可以大幅提公升帶有order by desc子句的sql語句效能。
一、場景
1、表名:test_t,有一欄位名為object_id
2、總資料量:580000行,segment_size:72mb
3、where條件(owner=』sys』 and object_id>50000)的行數:32472行
4、sql語句:
select * from test_t where owner='sys' and object_id > 50000 order by object_id desc
5、希望借助倒序索引,提公升order by object_id desc的效能
二、b*樹倒序索引(desc)比b*樹索引(預設為asc公升序)帶來的效能提公升對比
1、採用b*樹倒序索引(desc),
cost:4,執行計畫走的index range scan
sql語句:
select * from test_t where owner='sys' and object_id > 50000 order by object_id desc
索引方式
create
index
idx_test_t_id_desc
ontest_t(owner,object_id
desc)
cost
與執行計畫
description
object owner
object name
cost
cardinality
bytes
select statement, goal = first_rows 4
94298
9806992
table access by index rowid
systest_t 4
94298
9806992
index range scan
sys
idx_test_t_id_desc 3
1 2、採用b*樹索引(預設為asc),
cost:94103,執行計畫走的index range scan desending
索引方式
create
index
idx_test_t_id_desc
ontest_t(owner,object_id)
cost
與執行計畫
description
object owner
object name
cost
cardinality
bytes
select statement, goal = first_rows
94103
93792
9097824
table access by index rowid
systest_t
94103
93792
9097824
index
range
scan descending
sys
idx_test_t_id_asc
28793792
總結:
索引方式
cost
執行計畫
(owner,object_id desc)
4index range scan
(owner,object_id)
94103
index
range
scan desending
三、實際測試過程
sql語句:select * from test_t where owner='sys' and object_id > 50000 order by object_id desc
1、採用b*樹倒序索引(desc)測試過程與結果
(1)test_t表上建立(owner+object_id desc)的倒序索引
sql>
create index idx_test_t_id_desc on test_t(owner,object_id desc)
(2)重新收集統計資訊
sql> exec
dbms_stats.gather_table_stats(ownname=>'sys',tabname => 'test_t',estimate_percent=> 20 , cascade=> true );
(3)sql執行計畫與cost
description
object owner
object name
cost
cardinality
bytes
select statement, goal = first_rows 4
94298
9806992
table access by index rowid
systest_t 4
94298
9806992
index range scan
sys
idx_test_t_id_desc 3
12、b*樹索引(預設為asc公升序)測試過程與結果
(1)test_t表上建立(owner+object_id)的普通預設asc索引
sql>
create index idx_test_t_id_asc on test_t(owner,object_id)
(2)重新收集統計資訊
sql> exec
dbms_stats.gather_table_stats(ownname=>'sys',tabname => 'test_t',estimate_percent=> 20 , cascade=> true );
(3)sql執行計畫與cost
description
object owner
object name
cost
cardinality
bytes
select statement, goal = first_rows
94103
93792
9097824
table access by index rowid
systest_t
94103
93792
9097824
index
range
scan descending
sys
idx_test_t_id_asc
28793792 」
系統架構、作業系統、儲存裝置、資料庫、中介軟體、應用程式
「六個層面系統性的效能優化工作
歡迎加入
系統效能優化專業群,共同**效能優化技術。群號:
258187244
對Python中list的倒序索引和切片例項講解
python中list的倒序索引和切片是非常常見和方便的操作,但由於是倒序,有時候也不太好理解或者容易搞混。nums 0,1,2,3,4,5,6,7,8,9 print nums 1 9 print nums 2 8,9 print nums 3 0,1,2,3,nraibkk 4,5,6 例如,給...
vue 倒序 實現 如何使用Vue實現評論框架
對相應模組實現元件化 能顯示發布者 發布時間以及內容 乍一看不是很難,但是在具體的實現上還是遇到了一些問題。此外,因為第一次使用 vue 看文件看的也是一臉懵逼,話不多說,下面來分析一下,具體每個模組是怎麼實現的。原始碼位址 引入元件 commentinput commentlist paginat...
結構性偽類選擇器與倒序版的
結構性偽類選擇器 style 1 a標籤中第乙個兒子b採用此樣式 a b first child 2 a標籤中最後乙個兒子b採用此樣式 a b flast child 3 a標籤中唯一的乙個兒子b採用此樣式 a b only child 4 a標籤中第三個兒子b採用此樣式 a b nth child...