[MSSQL]如何高效查詢表的總記錄數

如何高效查詢表的總記錄數?[總結-整理-馬克]html

首先想到的天然是在表主鍵上應用COUNT函數來查詢了,這個是目前使用最多的方法,沒有之一函數

SELECT COUNT(1) ROWS FROM product

這裏再給出一些其它方法,這些方法或多或少會有一些限制,或者看起來不是那麼"完美",但依然有必定的借鑑意義,信息量不大,請客官慢用post

另類方法1spa

充分利用系統自帶的存儲過程SP_SPACEUSED,詳細的使用方式推薦谷哥或度娘,看代碼設計

EXEC SP_SPACEUSED 'PRODUCT'

 

結果以下圖所示3d

 

另類方法2code

根據國際慣例,不少表都會設計一個步長爲1的自增加整型(INT)列做爲表主鍵,該作法優劣這裏不展開討論,僅基於這一"習慣",外加一個假設:該字段連續無爲斷,則可使用MAX函數了,限制較多哈htm

1,自增加列blog

2,該列連續字符串

SELECT MAX(ProductCode) TotalCount FROM Product

 輸出

若是我有這樣的自增主鍵表,但是不連續,那就不能用咯?其實您可使用ROW_NUMBER()函數進行修復,再取MAX是同樣的,爲了避免至於太水,這裏仍然歸爲另類方法2,複習ROW_NUMBER的同窗點這裏

 

另類方法3

充分使用系統表中的信息,優勢是速度夠快!缺點是數據不精確,因此要結合您自身項目的特色來斷定是否適合使用該方法,代碼奉上

SELECT ROWS FROM [sysindexes] WHERE id = OBJECT_ID('product') and indid < 2

 輸出結果

另類方法3修復數據不精確方法,執行如下SQL腳本便可,請不要在生產環境使用! 

DBCC UPDATEUSAGE(0, 'product') with COUNT_ROWS

 

 該腳本執行後輸出:DBCC 執行完畢。若是 DBCC 輸出了錯誤信息,請與系統管理員聯繫。

 

另類方法4,虛席以待,期待您的精彩點評!

 

上邊介紹了一些系統表,系統存儲過程,猜想您可能對下邊的文章感興趣

SQL SERVER 2008 函數大全 - 字符串函數

SQL2008系通通計函數

[MSSQL]GROUPING SETS,ROLLUP,CUBE初體驗

[MSSQL]ROW_NUMBER函數

[MSQL]RANK函數

[MSSQL]NTILE另類分頁有麼有?!

[MSQL]也說SQL中顯示星期幾函數

[MSSQL]COALESCE與ISNULL函數

[MSSQL]PIVOT函數

[MSSQL]FOR XML AUTO I

[MSSQL]FOR XML AUTO II

[MSSQL]TRY…CATCH…通用格式

若是您喜歡該博客請點擊右下角推薦按鈕,您的推薦是做者創做的動力!

相關文章
相關標籤/搜索