说起统计表的记录数,第一印象就是count(*), 弊端这里就不多说了,这里将为大家介绍一些常用的查询表记录数的系统视图。

首先,介绍系统存储过程sp_spaceused, 返回结果包括行数、保留的磁盘空间以及当前数据库中的表、索引视图或 Service Broker 队列所使用的磁盘空间,或由整个数据库保留和使用的磁盘空间。使用起来很简单,直接加需要统计的表名即刻。

EXEC sp_spaceused 'Table_Name';

除了表的记录数,以上语句会返回很多空间相关的信息(这里暂不做介绍)。为了只获取返回的记录数信息,查看了sp_spaceused的源码(喜欢作啊~~),从中抽取了只用于统计记录数的相关表/视图。

方法一 , 使用系统视图sys.dm_db_partition_stats查询记录数。

SELECT sum(row_count) as ROW_COUNT FROM sys.dm_db_partition_stats WITH (NOLOCK) WHERE index_id < 2 and object_id = OBJECT_ID('Table_Name')

方法二 ,使用系统视图sys.partitions查询记录数。

SELECT sum(rows) as ROW_COUNT from sys.partitions WITH (NOLOCK) where index_id < 2 and object_id = OBJECT_ID('Table_Name')

方法三 ,使用来自SQL Server 2000的系统视图sysindexes,不知道在2000版本中表现如何,在后续的SQL Server版本中sysindexes查询记录数或者查询上次更新统计信息后变化的记录数,都会偶尔出现不准确的情况,所以不建议使用。

SELECT rowcnt FROM sysindexes WITH (NOLOCK) WHERE indid IN (0,1) and id = OBJECT_ID('Table_Name')

衍生开来,有时候需要统计数据库中所有的表分别的记录数,此时继续使用以上系统视图。

方法一 :

SELECT OBJECT_NAME(object_id) as Table_Name, sum(row_count) as ROW_COUNT FROM sys.dm_db_partition_stats WITH (NOLOCK) WHERE index_id < 2 group by object_id order by ROW_COUNT desc

方法二 :

SELECT OBJECT_NAME(object_id) as Table_Name, sum(rows) as ROW_COUNT from sys.partitions WITH (NOLOCK) where index_id < 2 group by object_id order by ROW_COUNT desc

方法三:

SELECT OBJECT_name(id) as Table_Name, rowcnt from sysindexes WITH (NOLOCK) where indid in(0,1) order by rowcnt desc

那么,temp表的记录数能不能查呢,答案是必须可以啊

SELECT T.name,P.rows,T.create_date,T.modify_date
FROM Tempdb.sys.tables T
JOIN Tempdb.sys.partitions PON T.object_id = P.object_id
WHERE T.name LIKE N'#tmp%'
ORDER BY T.create_date DESC

最后,再给出一个SQL用于统计数据库中所有表的记录数,分配的总空间,已使用/未使用空间以及数据页使用的空间大小。通常在遇到空间不足的问题时,我会使用该SQL统计DB中所有表及其空间使用情况,以便做进一步的清理操作,释放存储空间。注意,清理数据只会释放数据页使用的空间,并不会直接释放磁盘空间(已分配空间不会减少),只有shrink后才会释放相应的磁盘空间。

SELECT s.Name AS SchemaName,t.NAME AS TableName,SUM(p.rows)/COUNT(distinct a.type) AS RowCounts,CAST(SUM(a.total_pages) as float) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, SUM(a.data_pages) * 8 AS DataSpaceKB,CAST((SUM(a.total_pages) - SUM(a.used_pages)) as float)  * 8 AS UnusedSpaceKB,MIN(FILEGROUP_NAME(a.data_space_id)) as FileGroup
FROM sys.tables t
JOIN sys.schemas s ON s.schema_id = t.schema_id
JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
JOIN sys.partitions pON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 AND i.index_id < 2
GROUP BY t.Name, s.Name
ORDER BY TotalSpaceKB desc

【SQL Server】统计表记录数相关推荐

  1. SQL SERVER学习记录

    SQL SERVER学习记录 //创建数据库,请先在D盘手动建立一个 backup的文件夹 create database sl on (name = 'sl',filename = 'd:\back ...

  2. 2021-02-28 SQL server实践记录---3Select

    SQL server实践记录---3Select 举例用相关表 各种Select语句 举例用相关表 CangKu[cangkuid, cangkuhao, chengshi, mianji, chua ...

  3. sql server 统计表信息

    //查询所有表明 select name from sysobjects where xtype='u'select * from sys.tables//查询数据库中所有的表名及行数SELECT a ...

  4. Web API-添加Swagger,SQL Server,记录并导出到Excel

    目录 介绍 要求 1.创建一个新的Web API项目 2.将Swagger添加到项目 3.将项目连接到SQL Server数据库 4.登录到SQL Server 5.添加"导出到Excel& ...

  5. sql server express 并发数的限制_阿里数据库性能诊断的利器——SQL执行干预

    概述 在业务数据库性能问题诊断中,如果发现一个业务性能很差跟某个SQL有关,应用连接池几乎被该SQL占满,同时数据库服务器上也不堪重负.此时情况很紧急,业务改SQL重发布已经来不及了,运维能选择的操作 ...

  6. SQL Server查询表行数

    方式一:(表大时较慢) select count(*) as rows from table_name 方式二:(数据库里本身存的信息,速度较快) SELECT a.name, b.rows,b.in ...

  7. SQL server——sql命令创建、修改、删除表之记录

    目录 学习内容.sql命令创建.修改.删除表 创建表 指定所属文件组 修改表 增加一列number 更改列属性 删除某一列 重命名表 删除表 分区表 创建表 添加文件组 分别为其添加数据文件 创建分区 ...

  8. SQL Server 数据库之聚合函数

    聚合函数 1. 概述 2. 聚合函数 2.1 Sum 函数求和 2.2 Avg 求平均值 2.3 Min 函数返回最小值 2.4 Max 函数返回最大值 2.5 Count 函数统计表记录数 2.6 ...

  9. SQL Server各种日期计算方法

    通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...

最新文章

  1. 【2007-5】【素数算式】
  2. 017-封装-OC笔记
  3. 3dmax全局材质灯光细分插件_3Dmax渲染Vray渲染提速优化技巧
  4. 挑战 10 个最难回答的 Java 问题(附答案)
  5. php 模板引擎 优点,Smarty模板引擎的优点
  6. 使用C语言查看一个文件夹中所有文件及目录
  7. WinCE 5.0 WIFI 无线网卡的配置和建立连接(转)
  8. Golang 特性简介
  9. c++ string后面会添加‘\0‘
  10. H5网页实现录音并转换为文字
  11. 一個“語言”引發的血案
  12. 腾讯云Ubuntu18.04.4上安装brat文本标注工具(2020年9月)
  13. windows批处理学习
  14. ArcGIS申请添加天地图服务
  15. SoFiA2用户手册自翻译
  16. 燕尾服 CodeForces - 573A
  17. FlashFXP.v3.5.4.1230-RES-patch by SunBeam
  18. UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)
  19. 关于 Spfile文件误删除 或者 优化错误 恢复
  20. Singleton bean creation not allowed while singletons of this factory are in destruction (Do not requ

热门文章

  1. 区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境中的应用
  2. 【记录】ubuntu下安装和部署RAP2
  3. QCSPCChart for Java R3x0 Crack
  4. CSP2020-J2 题解 —— B题:直播获奖
  5. 数据治理方法论和实践小百科全书
  6. 离散数学复习总结 第一章 命题逻辑的基本概念
  7. 单机模式运行hadoop,来自《Hadoop权威指南》
  8. travis CI + coveralls
  9. python3调用新浪微博API 报HTTP Error 403: Forbid、400 Bad Request错误
  10. Java-用集合编写的班级管理系统