備忘録

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ライフを送りましょう。

 

今年も、よろしくお願いします!

関連記事

カテゴリー
最近の記事
  1. 2026年度 内定式及びオリエンテーションを執り行いました

  2. 2026年度 業務発表会を開催しました

  3. エンジニアに必要なのは「完璧な敬語」ではなく「論理的な敬意」だった。現場で信頼されるコミュニケーション作法

  4. 夏の疲れをリセット!秋を快適に迎えるための「からだケア」

  5. 「電話対応が苦手…」な時代だからこそ知っておきたい、エンジニアのための“電話・音声通話”サバイバルガイド

アーカイブ
TOP