時間型分割槽欄位不走分割槽的解決
表的欄位date_id定義為Integer型,並且date_id為本表分割槽欄位。現在有一個處理,需要取表中本月第一條到目前的累積資料。
老虎的sql如下:
select *
FROM PV_MART_A.FIN_MID_SERV_INC_DAILY A1
WHERE Date_Id <=CAST('20090818' AS INTEGER)-2
and substr(cast(date_id as VARCHAR(8)),1,6)=substr((cast((CAST(CAST('20090818' AS DATE FORMAT 'YYYYMMDD')-2 AS INTEGER)+19000000) as varchar(8))),1,6)
;
因為上述sql條件等號的左右都做了處理,毫無疑問她不會走分割槽。
select *
FROM PV_MART_A.FIN_MID_SERV_INC_DAILY A1
WHERE Date_Id between (date - extract(day from date) + 1)/1+19000000 and CAST('20090818'AS INTEGER)-2
;
仍不走分割槽,但sql改成:
select *
FROM PV_MART_A.FIN_MID_SERV_INC_DAILY A1
WHERE Date_Id between 20090801 and 20090816;
可以走分割槽,請問有沒有什麼辦法讓其走分割槽?
經過多次實驗,sql改成如下樣子會走分割槽:
select *
FROM PV_MART_A.FIN_MID_SERV_INC_DAILY A1
WHERE Date_Id between cast(trim(substr('20090818',1,6))||'01' as integer) and CAST('20090818'AS INTEGER)-2
;
問題解決了,調優目的達到了,但是沒有搞明白最佳化器為什麼做這種選擇。
閒了好好研究研究最佳化器的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16723161/viewspace-1027097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- 分割槽欄位VALUES LESS THAN時間格式及轉換
- Oracle分割槽表全域性索引新增分割槽時不會失效Oracle索引
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- 如何查詢分割槽表的分割槽及子分割槽
- postgresql分割槽表修改資料表欄位SQL
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- 調整分割槽後分割槽不見的資料找到方法
- Mysql 的分割槽型別MySql型別
- Windows分割槽型別Windows型別
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Oracle 間隔分割槽Oracle
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 分割槽解決LATCH FREE #98
- 如何解決安裝CentOS時遇到引導分割槽位於一個GPT分割槽方案的錯誤提示且分割槽後無法應用CentOSGPT
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- Linux主分割槽,擴充套件分割槽,邏輯分割槽Linux套件
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- /boot 分割槽空間不足時如何清理boot
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- Oracle 是分割槽表,但條件不帶分割槽條件的SQLOracleSQL
- DATE型別INTERVAL分割槽型別
- 使用split對分割槽表再分割槽
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- 分割槽表及分割槽索引建立示例索引
- oracle分割槽表和分割槽表exchangeOracle
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- Linux主分割槽,擴充套件分割槽,邏輯分割槽[final]Linux套件
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 範圍分割槽表和INTERVAL分割槽表對於SPLIT分割槽的區別
- 《RHEL6硬碟的分割槽和swap分割槽管理》——硬碟分割槽的大總結硬碟
- [間隔分割槽]Oracle10g、11g建立間隔分割槽表Oracle