使用索引優化StopKey
今天遇到一個調優的問題。
模擬的表結構如下:
目標資料庫是Oracle。
查詢的SQL不算複雜,就是查詢一個表最後建立的幾條記錄。
我先看了一下執行計劃,發現走的是全表掃描。
我感覺在CreateTime欄位上建立一個索引,就應該可以了,可實際上不行。
執行計劃沒有變。
索引列設定為非空 就可以解決這個問題了。
設定CreateTime欄位為非空,並且分析模式。
檢視執行計劃,已經走索引了。
---分割線
這個問題在MySQL裡面,就容易處理了。因為MySQL的索引包括空值。
但是通過簡單的建立索引,還是不能達到優化的效果。
通過JAVA程式初始化資料,然後建立索引,檢視執行計劃
可以看到,單純的建立一個索引是沒有效果的。
可以使用延遲關聯的方式
執行計劃如下:
可以看到已經應用了索引,達到了優化的目的。
總之,Oracle的索引列儘量設定為非空,會省不少心。
模擬的表結構如下:
-
create table test
-
(
-
id int primary key,
-
name varchar2(10),
-
createtime date
-
);
-
- insert into test select rownum,rownum,sysdate-rownum from dual connect by level<100000;
查詢的SQL不算複雜,就是查詢一個表最後建立的幾條記錄。
-
SELECT *
-
FROM (
-
SELECT A.*, ROWNUM AS RN
-
FROM (
-
SELECT *
-
FROM test
-
ORDER BY createtime DESC
-
) A
-
WHERE ROWNUM <= 20
-
)
- WHERE RN >= 10
我感覺在CreateTime欄位上建立一個索引,就應該可以了,可實際上不行。
執行計劃沒有變。
索引列設定為非空 就可以解決這個問題了。
設定CreateTime欄位為非空,並且分析模式。
檢視執行計劃,已經走索引了。
---分割線
這個問題在MySQL裡面,就容易處理了。因為MySQL的索引包括空值。
但是通過簡單的建立索引,還是不能達到優化的效果。
通過JAVA程式初始化資料,然後建立索引,檢視執行計劃
可以看到,單純的建立一個索引是沒有效果的。
可以使用延遲關聯的方式
-
select a.* from
-
test a
-
inner join
-
(
-
select id from test order by createtime desc limit 10,10
-
) b
-
on(a.id=b.id)
- order by a.createtime desc;
可以看到已經應用了索引,達到了優化的目的。
總之,Oracle的索引列儘量設定為非空,會省不少心。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1184340/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 分頁優化(stopkey)Oracle優化TopK
- 使用Elasticsearch的動態索引和索引優化Elasticsearch索引優化
- MySQL 索引使用策略及優化MySql索引優化
- mysql索引的使用和優化MySql索引優化
- 理解索引:索引優化索引優化
- sql優化之多列索引的使用SQL優化索引
- MSSQL優化之索引優化SQL優化索引
- stopkey對索引掃描的影響測試TopK索引
- Elasitcsearch索引優化索引優化
- MySQL索引優化MySql索引優化
- mysql優化索引MySql優化索引
- SQL優化-索引SQL優化索引
- MySQL優化之覆蓋索引的使用MySql優化索引
- SQL優化(二)(聯合索引的使用)SQL優化索引
- MySQL 效能優化之索引優化MySql優化索引
- SORT (UNIQUE STOPKEY)/ SORT GROUP BY STOPKEYTopK
- SQL優化案例-正確的使用索引(二)SQL優化索引
- Oracle優化案例-正確的使用索引(二)Oracle優化索引
- MySQL調優之索引優化MySql索引優化
- 【優化】使用反向索引(Reverse Key Indexes)減少索引熱點塊優化索引Index
- Mysql索引優化(一)MySql索引優化
- MySQL 5.7 索引優化MySql索引優化
- Oracle 索引的優化Oracle索引優化
- Mysql索引優化之索引的分類MySql索引優化
- 查詢中讓優化器使用複合索引優化索引
- sql優化案例一:使用了表示式不會使用索引SQL優化索引
- MySQL 字串索引優化方案MySql字串索引優化
- MongoDB索引優化詳解MongoDB索引優化
- MySQL 索引原理以及優化MySql索引優化
- mysql索引原理及優化MySql索引優化
- MySQL——索引優化實戰MySql索引優化
- MySQL 筆記 - 索引優化MySql筆記索引優化
- 效能優化:索引下推優化索引
- MySQL優化之索引解析MySql優化索引
- 索引優化和維護索引優化
- 倒排索引優化 - 跳錶索引優化
- SUM優化(複合索引)優化索引
- 聊聊索引和SQL優化索引SQL優化