SQLSERVER中快速获海量数据的记录总数
发布时间:2018-08-22 03:49:24 所属栏目:电商 来源:站长网
导读:2月份 曾写过一篇sqlserver 优化海量查询的要领http://blog.csdn.net/great_domino/archive/2005/02/01/275839.aspx 最近有同事碰着sqlserver统计记百万条以上记录条数太慢的题目,sp常常会碰着统计大量数据题目,或者是偶合的缘故起因,找到一个很简朴的要领
2月份 曾写过一篇sqlserver 优化海量查询的要领http://blog.csdn.net/great_domino/archive/2005/02/01/275839.aspx 最近有同事碰着sqlserver统计记百万条以上记录条数太慢的题目,sp常常会碰着统计大量数据题目,或者是偶合的缘故起因,找到一个很简朴的要领! 写了一篇文章 我们在统计记录的时辰凡是的做法是:select count(*) as c from table 。然而对付记录数庞大的表,上述做法将会很是耗时。在DELL 4400 处事器上做试验,MS Sqlserver 2000 数据库对付100万记录的简朴数据表执行上述语句,时刻在1分钟以上。假如在表的某个字段上做聚簇索引,第一次执行该语句的时刻和没有索引的时刻差不多,之后执行上述语句,速率很快,在1秒中以内,但当表的记录数产生较大变革后,再执行该语句又会经验一次耗时的进程。并且不是每个表都得当做聚簇索引的,对付数目庞大的表,假如必要常常增删操纵,建聚簇索引是一个很不明智的做法,将会极大的影响增删的速率。那么有没有一个较量简朴的要领快速获取表的记录总数呢?谜底是有的。 在MS SQL 数据库中每个表都在sysindexes 体系表中拥有至少一笔记录,该记录中的rows 字段会按时记录表的记录总数。下面是sysindexes 表的相干记录的寄义: 列名 数据范例 描写id int 表ID(假如 indid = 0 或255)。不然为索引所属表的IDIndid smallint 索引ID: 0=表 1=聚簇索引 >1=非聚簇索引 255=具有text或image数据的表条目。rows int 基于indid=0 和 indid=1地数据级行数,该值对付indid>1重 复。假如indid=255,rows配置为0。 当表没有聚簇索引时,Indid = 0 不然为 1。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |