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


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

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

SELECT COUNT(1) ROWS FROM product

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

另類方法1

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

EXEC SP_SPACEUSED 'PRODUCT'

 

結果如下圖所示

 

另類方法2

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

1,自增長列

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…通用格式

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM