高效查询mysql表的总记录数_[MSSQL]如何高效查询表的总记录数

本文介绍了几种不同的SQL方法来高效查询表的总记录数,包括使用COUNT函数、系统存储过程SP_SPACEUSED、自增长主键的MAX函数、系统表sysindexes以及DBCC命令。每种方法都有其适用场景和限制,提供了全面的解决方案。
摘要由CSDN通过智能技术生成

如何高效查询表的总记录数?[总结-整理-马克]

首先想到的自然是在表主键上应用COUNT函数来查询了,这个是目前使用最多的方法,没有之一

SELECT COUNT(1) ROWS FROM product

这里再给出一些其它方法,这些方法或多或少会有一些限制,或者看起来不是那么"完美",但依然有一定的借鉴意义,信息量不大,请客官慢用

另类方法1

充分利用系统自带的存储过程SP_SPACEUSED,详细的使用方式推荐谷哥或度娘,看代码

EXEC SP_SPACEUSED 'PRODUCT'

结果如下图所示

143d2d574ab04afab5fefdb0ed4459ac.png

另类方法2

根据国际惯例,很多表都会设计一个步长为1的自增长整型(INT)列作为表主键,该做法优劣这里不展开讨论,仅基于这一"习惯",外加一个假设:该字段连续无为断,则可以使用MAX函数了,限制较多哈

1,自增长列

2,该列连续

SELECT MAX(ProductCode) TotalCount FROM Product

输出

e69d68eb30c17abc4be1bfa3a4175998.png

如果我有这样的自增主键表,可是不连续,那就不能用咯?其实您可以使用ROW_NUMBER()函数进行修复,再取MAX是一样的,为了不至于太水,这里仍然归为另类方法2,复习ROW_NUMBER的同学点这里

另类方法3

充分使用系统表中的信息,优点是速度够快!缺点是数据不精确,所以要结合您自身项目的特点来判定是否适合使用该方法,代码奉上

SELECT ROWS FROM [sysindexes] WHERE id = OBJECT_ID('product') and indid < 2

输出结果

94c0c1ec4979808e4cd57673defa6f88.png

另类方法3修复数据不精确方法,执行以下SQL脚本即可,请不要在生产环境使用!

DBCC UPDATEUSAGE(0, 'product') with COUNT_ROWS

该脚本执行后输出:DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

另类方法4,虚席以待,期待您的精彩点评!

上边介绍了一些系统表,系统存储过程,猜测您可能对下边的文章感兴趣

如果您喜欢该博客请点击右下角推荐按钮,您的推荐是作者创作的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值