導航:首頁 > 編程大全 > oracle資料庫count函數

oracle資料庫count函數

發布時間:2024-09-15 22:01:03

① 在oracle生產庫中,我的一個表的數據有10億行記錄,怎麼快速計算有多少行,不要告訴我用count(*)之類的答案

你的這個表有主鍵沒?
如果有主鍵,假設你的這個表的主鍵是sid
那麼可以使用
select count(sid) from tablename
來查詢會比你用count(*) 要快的多。使用主鍵欄位會用到主鍵索引,會比你去掃描整個表要快的多。
oracle 裡面統計某個表的數據行的數量只有使用count函數來求。如果數據量非常大你應該考慮把你的歷史數據給清理掉或者使用分區表 。

② oracle資料庫,搜索百萬級別數據分頁優化問題

oracle count 百萬級 分頁查詢記錄總數、總條數優化
Oracle count 百萬級 查詢記錄總數、總條數優化
最近做一個項目時,做分頁時,發現分頁查詢速度很慢,分頁我做的是兩次查詢,一次是查詢總數,一次是查詢分頁結果
[java] view plain
/** 查詢總記錄數 **/
SELECT
COUNT(id)
FROM
USER
order by
id
/** 查詢結果集 **/
select
*
from
( select
row_.*,
rownum rownum_
from
( select
id ,
user_number,
user_name,
user_password,
sex,
Registered_time,
last_login_time,
post
from
USER u
order by
u.id) row_
where
rownum <= ?
)
where
rownum_ > ?
user表中的記錄是128萬多條,這個是沒有查詢條件時的查詢,也就是用戶剛剛進入模塊時的查詢,發現查詢時間是2566ms~2152ms之間,單獨執行每條語句,發現第一條的執行時間在2000ms以上,在PL/SQL中執行的結果也證實了我的判斷。所以要對select count語句進行優化。
在網上找了很多優化方案,大多不盡人意,(分表的方式聽上去不錯,不過由於單表是歷史原因,這里就不作考慮)。最後找到一個比較令人滿意的答。就是在語句中加入 /*+ROWID(USER)*/或者/*+ INDEX(USER ID) */ 來提高查詢效果。
聽說這個就是強制使用索引統計結果?如果有哪位大蝦能把原理詳細告訴我,請來多多指點!
[java] view plain
SELECT /*+ROWID(USER)*/ count(*) FROM USER t
或者
SELECT /*+ INDEX(USER ID) */ count(*) FROM USER t
使用後,單條統計總數的查詢在800ms左右,分頁查詢結果基本在900ms~950ms之間,基本在一秒之內,達到了當初設計需求。
當然,這個是沒有加查詢條件的,當把查詢條件加入後,不管前面加不加強制索引,結果時間都在2000ms之間,所以,如果要進行有條件的查詢,就要在where條件中進行優化。特別注意條件欄位查詢前後順序。

閱讀全文

與oracle資料庫count函數相關的資料

熱點內容
資料庫還原錯誤 瀏覽:937
蘋果6splus行貨和水貨怎麼區分 瀏覽:724
用手機qq郵箱怎麼發word文件 瀏覽:685
桌面的壓縮文件路徑太長 瀏覽:22
vfp表單按鈕代碼 瀏覽:6
1年java轉大數據要多少時間 瀏覽:618
extjspanel圖片 瀏覽:967
新手第一次學編程要注意什麼 瀏覽:519
手機上TXT文件 瀏覽:282
20款皓影19寸輪轂什麼數據 瀏覽:688
魔獸世界單機版資料庫 瀏覽:52
java實現批量上傳文件 瀏覽:533
相機文件格式 瀏覽:724
2012希賽網路工程師視頻 瀏覽:199
不知道學編程干什麼用 瀏覽:794
什麼是et文件怎麼打開 瀏覽:202
給企業編網站需要什麼專業 瀏覽:95
2份表格數據一樣為什麼合計不同 瀏覽:211
家庭網路與工作網路哪個好 瀏覽:885
微信檢查源文件 瀏覽:505

友情鏈接