有你在真好 的个人博客
如何实现在1毫秒内计算大数据表中的行数
阅读:2220 添加日期:2021/3/27 23:22:43 原文链接:https://www.toutiao.com/item/6493630342979650061/

如何实现在1毫秒内计算大数据表中的行数

在超过28万记录的情况下,在一毫秒内计算表中的行数。在SQL Server中,可以使用以下方法获取总行数。

  • sys.dm_db_partition_stats tables

  • sysindexes tables

  • Count()

  • Count() With No locks

最好的方法是在这个sysindexes以毫秒计数。

创建一个表。复制下面给出的脚本。

  1. USE[TestDB]

  2. GO

  3. /****** Object: Table [dbo].[Table_1] Script Date: 11/23/2016 10:10:54 PM ******/

  4. SET ANSI_NULLS ON

  5. GO

  6. SET QUOTED_IDENTIFIER ON

  7. GO

  8. CREATETABLE[dbo].[Table_1](

  9. [ID][nvarchar](50) NULL, [RandomNo][nvarchar](50) NULL, [Create_Date][datetime] NULL) ON[PRIMARY]

  10. GO

我插入了“2808924”行。

方法1(using Count())

询问

  1. SETSTATISTICSTIMEON

  2. SELECTCOUNT(ID) FROM TABLE_1

结果

SQL Server执行时间:

CPU time= 812 ms,elapsed time= 835 ms。

第二次

  1. SET STATISTICS TIME ON

  2. SELECT COUNT (ID) FROM TABLE_1

结果:

SQL Server分析和编译时间

CPU time = 0 ms, elapsed time = 0 ms.

SQL Server执行时间

CPU time = 0 ms, elapsed time = 0 ms.

SQL Server执行时间

CPU time = 328 ms, elapsed time = 326 ms.

方法-2(使用sysindexes)

  1. SETSTATISTICSTIMEON

  2. SELECTCONVERT(bigint, rows) FROM sysindexes WHERE id = OBJECT_ID(‘TABLE_1’) AND indid < 2

SQL Server分析和编译时间

CPU time = 0 ms, elapsed time = 0 ms.

SQL Server执行时间:

CPU time = 0 ms, elapsed time = 0 ms.

(1排受影响)

SQL Server执行时间:

CPU time = 0 ms, elapsed time = 0 ms.

结论

使用count()时,只要SQL sysindex表占用的时间达到CPU time = 328 ms, elapsed time = 326 ms,则其执行时间为CPU time = 0 ms, elapsed time = 0

    如何实现在1毫秒内计算大数据表中的行数

    ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号