MSSql技巧之快速得到表的記錄總數(shù)
MSSql技巧之快速得到表的記錄總數(shù)
發(fā)布日期:2010年12月20日星期一作者:EricHu
判斷某一個表的記錄總數(shù),對于一個開發(fā)者來說是最再常見不過的事,我想大家都常用的作法就是:
這種做法沒做,我這兒主要說的是效率問題。當(dāng)一個數(shù)據(jù)表的記錄數(shù)不是太多時,這樣得到記錄總數(shù)的效率不是問題。但試想,如果一個表的記錄總數(shù)超過幾百萬或者幾千萬,要再用上面的Sql語句得到表的記錄總數(shù),速度會慢得讓人難以忍受。有人會說了,可以一表上建立聚簇集索引呀,不錯,若在表的某個字段上建立聚簇索引,第一次執(zhí)行該語句的時間和沒有索引的時間差不多,之后執(zhí)行上述語句,速度很快。但如果要經(jīng)常做增刪改操作,建立聚簇索引不是一個明智的做法,將會極大的影響增刪改的速度。得到一個數(shù)據(jù)表的記錄總數(shù)經(jīng)常用在以下幾個方面:
一、做數(shù)據(jù)分頁時要得到總記錄數(shù)。
二、判斷數(shù)據(jù)表的記錄數(shù)是否過大,是否需要備份數(shù)據(jù)。
三、用戶要求等等。
說了這么多,那么到底如何快速得到一個數(shù)據(jù)表的記錄總數(shù)呢?答案是:利用SqlServer數(shù)據(jù)庫的系統(tǒng)視圖sys.sysindexes
在MS Sql數(shù)據(jù)庫中,每個數(shù)據(jù)表都在sys.sysindexes系統(tǒng)表中擁有至少一條記錄,記錄中的rows 或rowcnt字段會定時記錄表的記錄總數(shù)。注意是定時,這說明了用這個方法得到的總記錄數(shù)不是一個精確值,原因是MsSQL并不是實(shí)時更新該字段的值,而是定時更新,但從實(shí)踐來看該值和精確值誤差不大,如果你希望快速粗略估算表的記錄總數(shù),建議你采用該方法。
SQLSEVER幫助文件對sys.sysindexes系統(tǒng)視圖的說明為:當(dāng)前數(shù)據(jù)庫中的每個索引和表在表中各對應(yīng)一行。說了這么多,直接動手操作便一目了然。
打開SqlServer,執(zhí)行如下語句:
2 select id,object_name(id) as tableName,indid,rows,rowcnt
3 from sys.sysindexes where indid in(0,1)
得到:

作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號)
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發(fā)框架
,
給用戶和開發(fā)者最佳的.Net框架平臺方案,為企業(yè)快速構(gòu)建跨平臺、企業(yè)級的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項目管理師、DBA。專注于微軟平臺項目架構(gòu)、管理和企業(yè)解決方案,多年項目開發(fā)與管理經(jīng)驗,曾多次組織并開發(fā)多個大型項目,在面向?qū)ο?、面向服?wù)以及數(shù)據(jù)庫領(lǐng)域有一定的造詣?,F(xiàn)主要從事基于
RDIF
框架的技術(shù)開發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問題或建議,請多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯(lián)系我,非常感謝。

判斷某一個表的記錄總數(shù),對于一個開發(fā)者來說是最再常見不過的事,我想大家都常用的作法就是:
select count(*) from 表名;
這種做法沒做,我這兒主要說的是效率問題。當(dāng)一個數(shù)據(jù)表的記錄數(shù)不是太多時,這樣得到記錄總數(shù)的效率不是問題。但試想,如果一個表的記錄總數(shù)超過幾百萬或者幾千萬,要再用上面的Sql語句得到表的記錄總數(shù),速度會慢得讓人難以忍受。有人會說了,可以一表上建立聚簇集索引呀,不錯,若在表的某個字段上建立聚簇索引,第一次執(zhí)行該語句的時
浙公網(wǎng)安備 33010602011771號