巧用分割槽查詢案例一則
近期一位同事問我他們透過pl/sql dev匯出為csv文字檔案的SQL語句一直執行不下去
原來資料庫倉庫裡的一張分割槽表,資料量超級多,一天平均資料量超過8千多萬行...而他們想匯出一個月的資料,但是實際執行sql時發現sql無法執行完成。
然後他們將查詢條件縮減為一個星期,結果還是不行....嘗試按天匯出,試了以後還是不行...
他們幾乎折騰了3天多,甚至提出了一些不太合理資料庫要求(比如講資料庫的temp表空間誇張為幾個TB)。
他們sql是如下:
[@more@]select t.cuttime,t.ceventid,t.cstbid,t.csource from abc.test_source t
where t.cuttime>=to_date('2013/08/06 00:00:00','yyyy/mm/dd hh24:MI:ss')
and t.cuttime
我隨便看看錶中資料行條數,執行如下sql,結果跑半天沒有結果出來,看來該表確實很大,然後我取消了sql
select count(*) from abc.test_SOURCE
透過如下查詢可以判斷,該表是分割槽表:
select * from user_PART_TABLES b where b.owner='abc' and table_name='test_SOURCE'
在透過如下查詢初步判斷,該分割槽表每天生成一個分割槽表:
SQL> col segment_name format a30
SQL> col owner format a10
SQL> select owner,segment_name,partition_name,segment_type from dba_segments where segment_name='test_SOURCE' AND OWNER='abc';
根據以上查詢結果,查詢了一天生成的分割槽表中記錄數,大致在8千萬以上:
select count(*) from abc.test_SOURCE partition (test_SOURCE_P_20130806);
如果採用如下原始sql肯定是跑不動的。
select t.cuttime,t.ceventid,t.cstbid,t.csource from abc.test_source t
where t.cuttime>=to_date('2013/08/06 00:00:00','yyyy/mm/dd hh24:MI:ss')
and t.cuttime
我對以上sql進行了如下的改造後,查詢結果可以出來了:
select count(*) from abc.test_source partition (VAV_SOURCE_P_20130806) t
where t.ceventid in (1,2,5,7,23,21,26);
在加上pl/sql dev的匯出CSV功能,再次進行匯出發現匯出成功。在次過程也發現那些操作者對PLSQL Dev的csv檔案匯出功能也不熟,以為先將查詢結果展現完畢才能完整匯出為csv檔案,實際上在PLSQL Dev上沒有必要查詢出結果集展現而直接選擇匯出CSV檔案即可。
為此有了如下的體會:
選用scale out和scale up的IT架構和系統軟體還不夠,應用軟體的設計也應該遵循此原則,還有團隊...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1060951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- SCI分割槽查詢
- 如何查詢分割槽表的分割槽及子分割槽
- 分割槽表分割槽索引查詢效率探究索引
- Oracle查詢分割槽表的最後一個分割槽值Oracle
- 一次分割槽查詢異常的分析
- oracle實用sql(14)--查詢分割槽表的分割槽列和子分割槽列OracleSQL
- mysql 5.7.11查詢分割槽表的一個問題MySql
- Oracle查詢Interval partition分割槽表內資料Oracle
- oracle 並行cpu查詢分割槽表測試Oracle並行
- 分割槽表索引實踐案例索引
- Spark SQL解析查詢parquet格式Hive表獲取分割槽欄位和查詢條件SparkSQLHive
- linux下磁碟分割槽的案例Linux
- PostgreSQL 原始碼解讀(98)- 分割槽表#4(資料查詢路由#1-“擴充套件”分割槽表)SQL原始碼路由套件
- 巧用rowid簡化sql查詢SQL
- oracle分割槽partition及分割槽索引partition index(一)Oracle索引Index
- 第40期:MySQL 分割槽表案例分享MySql
- mysql幾種表分割槽建立案例MySql
- oracle partition分割槽_分割槽列為空測試(一)Oracle
- MySQL的分割槽(一)MySql
- oracle分割槽索引(一)Oracle索引
- Spark 3.0 新特性 之 自適應查詢與分割槽動態裁剪Spark
- 將一個非分割槽錶轉換為分割槽表
- solaris 分割槽常用命令(備查)
- Oracle查詢資料庫中所有表和分割槽表的記錄數Oracle資料庫
- 【學習筆記】分割槽表和分割槽索引——概念部分(一)筆記索引
- 【分割槽】如何將一個普通錶轉換為分割槽表
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- Linux主分割槽,擴充套件分割槽,邏輯分割槽Linux套件
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- oracle 之全文索引表的分割槽交換案例Oracle索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- [20180211]dblink查詢單個分割槽資料.txt
- Oracle索引或這類索引的分割槽處於不可用狀態 查詢Oracle索引