zoukankan      html  css  js  c++  java
  • [MSSQL]如何高效查询表的总记录数

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

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

    SELECT COUNT(1) ROWS FROM product

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

    另类方法1

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

    EXEC SP_SPACEUSED 'PRODUCT'

    结果如下图所示

    另类方法2

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

    1,自增长列

    2,该列连续

    SELECT MAX(ProductCode) TotalCount FROM Product

     输出

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

    另类方法3

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

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

     输出结果

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

    DBCC UPDATEUSAGE(0, 'product') with COUNT_ROWS

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

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

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

    SQL SERVER 2008 函数大全 - 字符串函数

    SQL2008系统统计函数

    [MSSQL]GROUPING SETS,ROLLUP,CUBE初体验

    [MSSQL]ROW_NUMBER函数

    [MSQL]RANK函数

    [MSSQL]NTILE另类分页有么有?!

    [MSQL]也说SQL中显示星期几函数

    [MSSQL]COALESCE与ISNULL函数

    [MSSQL]PIVOT函数

    [MSSQL]FOR XML AUTO I

    [MSSQL]FOR XML AUTO II

    [MSSQL]TRY…CATCH…通用格式

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

  • 相关阅读:
    SHELL[22]
    SHELL[15]
    SHELL[08]
    SHELL[12]
    SHELL[06]
    SHELL[24]
    SHELL[11]
    shell文件合并、去重
    SHELL[25]
    SHELL[14]
  • 原文地址:https://www.cnblogs.com/kkun/p/3274488.html
Copyright © 2011-2022 走看看