解決對時間列運算導致不能走索引的問題
剛剛作為DBA入職新單位,檢視了一下AWR,發現很多SQL需要查詢當天的記錄。
模擬環境如下:
-
create table test
-
(
-
c1 timestamp
-
);
-
-
insert into test select systimestamp+(rownum-10) from dual connect by level<=20;
-
-
commit;
-
- create index inx_test on test(c1);
-
SQL> select * from test;
C1
---------------------------------------------------------------------------
04-APR-14 11.35.43.000000 PM
05-APR-14 11.35.43.000000 PM
06-APR-14 11.35.43.000000 PM
07-APR-14 11.35.43.000000 PM
08-APR-14 11.35.43.000000 PM
09-APR-14 11.35.43.000000 PM
10-APR-14 11.35.43.000000 PM
11-APR-14 11.35.43.000000 PM
12-APR-14 11.35.43.000000 PM
13-APR-14 11.35.43.000000 PM
14-APR-14 11.35.43.000000 PM
15-APR-14 11.35.43.000000 PM
16-APR-14 11.35.43.000000 PM
17-APR-14 11.35.43.000000 PM
18-APR-14 11.35.43.000000 PM
19-APR-14 11.35.43.000000 PM
20-APR-14 11.35.43.000000 PM
21-APR-14 11.35.43.000000 PM
22-APR-14 11.35.43.000000 PM
23-APR-14 11.35.43.000000 PM
20 rows selected.
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
14-APR-14 12.12.43.878915 AM +08:00
SQL> select * from test where trunc(c1)=trunc(sysdate);
C1
---------------------------------------------------------------------------
14-APR-14 11.35.43.000000 PM
沒有建立函式索引的情況下,都是全表掃描的。
改寫問題SQL
select * from test
where c1 >= to_timestamp(trunc(sysdate,'dd'))
and c1
檢視執行計劃
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1141412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不能建立降序索引的問題的解決索引
- javascript小數乘法運算導致的精度問題JavaScript
- ipf導致sendmail不能正確轉發郵件的問題解決AI
- CAS導致的ABA問題及解決
- 時區問題導致時間相差8個小時
- golang gin框架進行時間運算之解決orm時間與時間運算——附原始碼Golang框架ORM原始碼
- js算數運算精度問題解決方案JS
- 時區錯誤導致oracle的EM不能啟動解決辦法Oracle
- 解決memory_target設定過小導致不能啟動資料庫的問題資料庫
- 關於聯合索引,範圍查詢,時間列索引的幾個問題索引
- Oracle優化案例-join列索引缺失導致的sql效能問題(二十六)Oracle優化索引SQL
- 解決MongoDB儲存時間時差的問題MongoDB
- 如何巧妙著運用「位運算」來解決問題?
- Oracle全部索引丟失導致的效率問題處理Oracle索引
- JavaScript解決浮點數算數運算精度問題JavaScript
- MySQL Case-時間問題導致MySQL例項批次當機MySql
- 解決hyper v導致docker無法啟動問題Docker
- Standby OS i/o問題導致Primary 庫不能正常歸檔問題
- undo表空間出現壞塊導致資料庫重啟問題解決資料庫
- LINUX 解決時間同步問題(NTP)Linux
- react-router4:解決使用browserRouter模式導致的404問題React模式
- 因為arp 問題導致的vip 故障與解決方案
- DNS導致資料庫登入緩慢的問題解決DNS資料庫
- stream不能實時傳送standby redo log問題的解決
- shell 計算時間差的問題
- 快速解決cmd中不同盤之間不能切換的問題
- Java 8 的日期與時間問題解決方案Java
- 位運算解決多標籤問題【原創】
- 執行計劃問題導致處理速度時快時慢的問題
- 15、MySQL Case-時間問題導致MySQL例項批次當機MySql
- 解決java socket在傳輸漢字時出現截斷導致亂碼的問題Java
- 引入外部js檔案導致亂碼問題解決方案JS
- 字元校驗集問題導致索引無法正常使用字元索引
- Oracle表空間切換路徑,解決硬碟滿導致的ORA-01653問題Oracle硬碟
- 點陣圖索引導致的會話阻塞問題(p7)索引會話
- java中的時間運算Java
- javascript中的時間運算JavaScript
- 解決Docker容器時區及時間不同步的問題Docker