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

2021-09-08 16:52:02 字數 1785 閱讀 9950

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

首先想到的自然是在表主鍵上應用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

另類方法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…通用格式

如果您喜歡該部落格右下角推薦按鈕,您的推薦是作者創作的動力!

MSSQL查詢資料所在的表與列

本人無意中需要幫助維護我們的鄰居 巴倫臺醫院的醫院管理系統。其中在一次醫保資料上傳的過程中提示 病人 74828429 插入錯誤,處方號不能為空。經查,發現是把醫院管理系統的 sql2000資料庫的內容,經過處理之後,插入到oracle8 資料庫中。那麼這裡只提示了oracle8的表名列名。卻沒有提...

MSSQL程式設計筆記二 表的連線查詢

1 inner join left join right join 之間的關係 inner join 只要在這兩個表的公共字段之中有相符值,內部聯接將組合兩個表中的記錄。注意 在乙個 inner join 之中,可以巢狀 left join 或 right join,但是在 left join 或 ...

MSSQL2005查詢表中字段的描述

自定義查詢的功能是使用者可以選擇資料庫中表和表中的字段,但一般欄位都使用英文本元表示,這樣對於使用者來說根本無法理解表中字段的含義,解決辦法一般有兩種 1.向資料庫中增加兩個表,乙個存放庫中的資料表,另乙個對應表中的字段。使用時只要增加相關的表和字段的條目和注釋就可以了。2.另一種方法是從資料庫中查...