SQL Serverで大量レコードの件数を取得する

要点
システム・ストアド・プロシージャ「sp_spaceused」を利用します。
EXEC sp_spaceused [テーブル名];
詳細(失敗の経緯)
製造業IoT担当の栫です。
IoTの取り掛かりで、自社資源を間借りしてデータ収集するとして、センサーデータをRDBに登録すると、思いのほか、レコードがかさみます。
(かさみました。。。)
システム検証環境に、SQL Serverを利用したとき、大量データ件数(21億件越え)を確認したときの備忘です。
とあるテーブルの件数の確認に、システムデータベースから、データ件数を確認しました。
SELECT A.name AS テーブル名, B.rows AS 総件数
FROM sys.objects AS A
JOIN sys.sysindexes AS B
ON A.object_id = B.id AND B.indid < 2
WHERE A.type = ‘U’
ORDER BY A.name
確認のため、テーブルを参照してカウントしてみたら、、、、
SELECT count(1) FROM [調べたいテーブル]
で、オーバーフローしました。
(センサーデータの蓄積はRDBは向かないなという反省は別にして。。。)
。。。。とすると、「count(1)」がintの最大値を超えたことになるので、
本当は、2^31-1 (2,147,483,647)≒21億件を超えています。
なので、システムデータベースの件数は、実態からかい離することになります。
下のように「count(1)」をCASTすれば、取得できなくはないですが、15分間待っても結果が返ってきません。
select CAST(count(1) AS BIGINT) from [調べたいテーブル]
そこで、システム・ストアド・プロシージャ「sp_spaceused」を利用することで、取得できました。
EXEC sp_spaceused [テーブル名];
以上、備忘録でした!
リソースやサービスなど、ありものを駆使して、楽々IoTライフを送りましょう。
今年も、よろしくお願いします!