【SQL Server】统计表记录数
说起统计表的记录数,第一印象就是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】统计表记录数相关推荐
- SQL SERVER学习记录
SQL SERVER学习记录 //创建数据库,请先在D盘手动建立一个 backup的文件夹 create database sl on (name = 'sl',filename = 'd:\back ...
- 2021-02-28 SQL server实践记录---3Select
SQL server实践记录---3Select 举例用相关表 各种Select语句 举例用相关表 CangKu[cangkuid, cangkuhao, chengshi, mianji, chua ...
- sql server 统计表信息
//查询所有表明 select name from sysobjects where xtype='u'select * from sys.tables//查询数据库中所有的表名及行数SELECT a ...
- Web API-添加Swagger,SQL Server,记录并导出到Excel
目录 介绍 要求 1.创建一个新的Web API项目 2.将Swagger添加到项目 3.将项目连接到SQL Server数据库 4.登录到SQL Server 5.添加"导出到Excel& ...
- sql server express 并发数的限制_阿里数据库性能诊断的利器——SQL执行干预
概述 在业务数据库性能问题诊断中,如果发现一个业务性能很差跟某个SQL有关,应用连接池几乎被该SQL占满,同时数据库服务器上也不堪重负.此时情况很紧急,业务改SQL重发布已经来不及了,运维能选择的操作 ...
- SQL Server查询表行数
方式一:(表大时较慢) select count(*) as rows from table_name 方式二:(数据库里本身存的信息,速度较快) SELECT a.name, b.rows,b.in ...
- SQL server——sql命令创建、修改、删除表之记录
目录 学习内容.sql命令创建.修改.删除表 创建表 指定所属文件组 修改表 增加一列number 更改列属性 删除某一列 重命名表 删除表 分区表 创建表 添加文件组 分别为其添加数据文件 创建分区 ...
- SQL Server 数据库之聚合函数
聚合函数 1. 概述 2. 聚合函数 2.1 Sum 函数求和 2.2 Avg 求平均值 2.3 Min 函数返回最小值 2.4 Max 函数返回最大值 2.5 Count 函数统计表记录数 2.6 ...
- SQL Server各种日期计算方法
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...
最新文章
- 【2007-5】【素数算式】
- 017-封装-OC笔记
- 3dmax全局材质灯光细分插件_3Dmax渲染Vray渲染提速优化技巧
- 挑战 10 个最难回答的 Java 问题(附答案)
- php 模板引擎 优点,Smarty模板引擎的优点
- 使用C语言查看一个文件夹中所有文件及目录
- WinCE 5.0 WIFI 无线网卡的配置和建立连接(转)
- Golang 特性简介
- c++ string后面会添加‘\0‘
- H5网页实现录音并转换为文字
- 一個“語言”引發的血案
- 腾讯云Ubuntu18.04.4上安装brat文本标注工具(2020年9月)
- windows批处理学习
- ArcGIS申请添加天地图服务
- SoFiA2用户手册自翻译
- 燕尾服 CodeForces - 573A
- FlashFXP.v3.5.4.1230-RES-patch by SunBeam
- UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)
- 关于 Spfile文件误删除 或者 优化错误 恢复
- Singleton bean creation not allowed while singletons of this factory are in destruction (Do not requ