大批次引數輸入查詢處理
我是電信的,原來公司有一套PB開發的系統,現轉成Web模式。使用的部門很不講理,很多時候要以原PB系統的執行速度和Web模式的作比較。所以只有最佳化,別無選擇。
現有一令小弟頭疼的問題望能解決:
有一張全市的話費表約1400萬條資料。裡面有200萬個號碼。
有兩個欄位:
號碼 話費帳目項
110 本地話費
110 長途話費
112 本地話費
現在要對錶進行報表統計。
要一次過輸入6000至8000個號碼,在這張表找出對應的號碼。
要知道 oracle in的最大數為1000個,所以當初我用or in(“前1000個號碼”)+or in(1000至1999的號碼)的方法拼成sql語句執行。
當輸入的電話數為4000左右的話,輸出的結果是4000*該批號碼對應帳目項可能就是40000條記錄,我用了分頁的方式執行4000條號碼的查詢,只要5秒內就能出結果。
當中包含的外表關聯就不說了,總之1000至2000的批次輸入是很快的基本和PB的速度一樣,而且經過壓力測試可以多併發。
但使用的部門叼,一次輸入個6、7000個。搞到oracle出現個share_pool錯誤。估計是sql拼起來過長所致,叫他們分開錄入,他們就以PB那套系統,6000、70000三秒就搞定了。而且是全部結果都顯示出來了。然後說:“我要的就是這樣的速度”,我都欲哭無淚。但領導也要求這樣。
所以只能考慮用中間表了,但多使用者操作報表查詢的話,要怎樣解決呢??
現有一令小弟頭疼的問題望能解決:
有一張全市的話費表約1400萬條資料。裡面有200萬個號碼。
有兩個欄位:
號碼 話費帳目項
110 本地話費
110 長途話費
112 本地話費
現在要對錶進行報表統計。
要一次過輸入6000至8000個號碼,在這張表找出對應的號碼。
要知道 oracle in的最大數為1000個,所以當初我用or in(“前1000個號碼”)+or in(1000至1999的號碼)的方法拼成sql語句執行。
當輸入的電話數為4000左右的話,輸出的結果是4000*該批號碼對應帳目項可能就是40000條記錄,我用了分頁的方式執行4000條號碼的查詢,只要5秒內就能出結果。
當中包含的外表關聯就不說了,總之1000至2000的批次輸入是很快的基本和PB的速度一樣,而且經過壓力測試可以多併發。
但使用的部門叼,一次輸入個6、7000個。搞到oracle出現個share_pool錯誤。估計是sql拼起來過長所致,叫他們分開錄入,他們就以PB那套系統,6000、70000三秒就搞定了。而且是全部結果都顯示出來了。然後說:“我要的就是這樣的速度”,我都欲哭無淚。但領導也要求這樣。
所以只能考慮用中間表了,但多使用者操作報表查詢的話,要怎樣解決呢??
相關文章
- 塗顏色(數論,大資料輸入處理)大資料
- MyBatis 引數處理MyBatis
- sqlserver 針對預處理sql傳入引數的處理方式SQLServer
- 開啟查詢慢查詢日誌引數
- 查詢hadoop引數變數Hadoop變數
- 利用SQL Profiler處理開銷較大的查詢SQL
- K大數查詢
- 隱含引數的查詢
- 隱藏引數查詢sqlSQL
- MySQL邏輯查詢處理MySql
- oracle 死鎖查詢處理Oracle
- MySQL 查詢處理 SQL查詢執行順序MySql
- 使用GraphQL查詢引數來設計強大的APIAPI
- 谷歌收錄批次查詢,教你批次查詢谷歌收錄的方法谷歌
- main命令列引數輸入AI命令列
- 谷歌收錄批次查詢,谷歌收錄批次查詢的方法步驟谷歌
- Sql Server 的引數化查詢SQLServer
- 抽象SQL引數化查詢VK抽象SQL
- Oracle隱含引數的查詢Oracle
- 訊號處理基本引數
- JavaScript 中的引數處理JavaScript
- Mybatis引數處理總結MyBatis
- MyBatis Like查詢處理%_符號MyBatis符號
- Oracle死鎖查詢及處理Oracle
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- 檔案批次查詢複製匯出,按檔名批次查詢檔案,按檔案內容批次查詢檔案
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- oracle學習(3) -變數為null時的查詢處理Oracle變數Null
- 處理stdin輸入的字串指令字串
- pat處理輸入輸出小技巧(待更新)
- 如何實現引數級聯查詢
- Microsoft Graph for Office 365 - 查詢引數(二)ROS
- Microsoft Graph for Office 365 - 查詢引數(一)ROS
- MySQL查詢快取引數詳解MySql快取
- MySQL引數化查詢的IN 和 LIKEMySql
- Oracle隱形引數查詢指令碼Oracle指令碼
- 獲取request中的查詢引數
- 查詢oracle中的隱形引數Oracle