亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

MS SQLSERVER中如何快速獲取表的記錄總數

添加時間:2013-5-8 17:48:34  添加: 思海網絡 
在數據庫應用的設計中,我們往往會需要獲取某些表的記錄總數,用于判斷表的記錄總數是否過大,是否需要備份數據等。我們通常的做法是:select count(*) as c from tableA 。然而對于記錄數巨大的表,上述做法將會非常耗時。在DELL 4400 服務器上做試驗,MS Sqlserver 2000 數據庫對于100萬記錄的簡單數據表執行上述語句,時間在1分鐘以上。如果在表的某個字段上做聚簇索引,第一次執行該語句的時間和沒有索引的時間差不多,之后執行上述語句,速度很快,在1秒中以內,但當表的記錄數發生較大變化后,再執行該語句又會經歷一次耗時的過程。而且不是每個表都適合做聚簇索引的,對于數量巨大的表,如果需要經常增刪操作,建聚簇索引是一個很不明智的做法,將會極大的影響增刪的速度。那么有沒有一個比較簡單的方法快速獲取表的記錄總數呢?答案是有的。
 在MS SQL 數據庫中每個表都在sysindexes 系統表中擁有至少一條記錄,該記錄中的rows 字段會定時記錄表的記錄總數。下面是sysindexes 表的相關記錄的含義:

列名      數據類型             描述
id            int                        表ID(如果 indid = 0 或255)。否則為索引所屬表的ID
Indid       smallint                索引ID:
                                         0=表
                                         1=聚簇索引
                                         >1=非聚簇索引
                                        255=具有text或image數據的表條目。
rows       int                       基于indid=0 和 indid=1地數據級行數,該值對于indid>1重 復。如果indid=255,rows設置為0。
  
  
當表沒有聚簇索引時,Indid = 0 否則為 1。

那么現在大家應該知道如何獲取表的記錄總數了,只需執行如下語句:
select rows from sysindexes where id = object_id(tablename) and indid in (0,1)

該方法獲取表的記錄總數的速度非?欤诤撩爰壘涂梢酝瓿桑啾萻elect count(*) 要快上數萬倍,但是大家在運用該方法是一定要主要,該方法得到的表的總記錄數不是一個精確值,原因是MS SQL 并不是實時更新該字段的值,而是定時更新,當從實踐來看該值和精確值一般誤差不大,如果你希望快速的粗略估算表的大小,建議你采用該方法。如果你希望得到精確值,那么請在執行上述語句前執行DBCC UPDATEUSAGE(DatabaseName,[TABLENAME]) WITH ROW_COUNTS 強制更新該字段的值,但這樣第一次更新時會耗費大量的時間,這樣做的效果和建有聚簇索引的表 select count (*) 效果相差不大,所以如果你希望相對快速地得到精確的表的記錄總數,那么你有兩種選擇,建聚簇索引或者先DBCC 再使用上述方法。
關鍵字:SQLSERVER、數據庫
分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站