当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL Server快速获得表的记录总数[MSSQL防范]

赞助商链接



  本文“SQL Server快速获得表的记录总数[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  在数据库利用的计划中,我们常常会需求获得某些表的记录总数,用于判断表的记录总数能否过大,能否需求备份数据等.我们普通的做法是:select count(*) as c from tableA .但是关于记录数宏大的表,上述做法将会非常耗时.在DELL 4400 服务器上做试验,MS Sqlserver 2000 数据库关于100万记录的简单数据表履行上述语句,时间在1分钟以上.

  假如在表的某个字段上做聚簇索引,第一次履行该语句的时间和没有索引的时间差不多,之后履行上述语句,速度很快,在1秒中以内,但当表的记录数发生较大改变后,再履行该语句又会阅历一次耗时的历程.并且不是每个表都合适做聚簇索引的,关于数目宏大的表,假如需求常常增删操作,建聚簇索引是一个很不明智的做法,将会极大的影响增删的速度.那么有没有一个对比简单的办法快速获得表的记录总数呢?答案是有的.

  在MS SQL 数据库中每个表都在sysindexes 系统表中拥有至少一条记录,该记录中的rows 字段会按时记录表的记录总数.

  下面是sysindexes 表的相关记录的含义:

  列名 数据范例 描写

  id int 表ID(假如 indid = 0 或255).不然为索引所属表的ID

  Indid smallint 索引ID:

  0=表

  1=聚簇索引

  >1=非聚簇索引

  255=具有text或image数据的表条目.

  rows int 基于indid=0 和 indid=1地数据级行数,该值关于indid>1重 复.假如indid=255,rows设置为0.

  当表没有聚簇索引时,Indid = 0 不然为 1.

  那么目前大家应当知道若何获得表的记录总数了,只需履行以下语句:

  select rows from sysindexes where id = object_id(tablename) and indid in (0,1)

  该办法获得表的记录总数的速度非常快,在毫秒级便可以完成,相比select count(*) 要快上数万倍,但是大家在应用该办法是一定要主要,该办法得到的表的总记录数不是一个切确值,缘由是MS SQL 并非及时更新该字段的值,而是按时更新,当从实践来看该值和切确值普通偏差不大,假如你但愿快速的大概预算表的大小,倡议你采取该办法.

  假如你但愿得到切确值,那么请在履行上述语句前履行DBCC UpdateUSAGE(DatabaseName,[TABLENAME]) WITH ROW_COUNTS 强迫更新该字段的值,但这样第一次更新时会耗费大量的时间,这样做的效果和建有聚簇索引的表 select count (*) 效果相差不大,所以假如你但愿相对快速地得到切确的表的记录总数,那么你有两种挑选,建聚簇索引大概先DBCC 再利用上述办法.   以上是“SQL Server快速获得表的记录总数[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .