SQL Server 2005中如何提升记录总数统计的性能
发布时间:2016-09-11 21:36:21 所属栏目:MsSql教程 来源:站长网
导读:当我们想统计数据表的记录总数时,我们使用的T-SQL函数count(*) 。如果在 一个包含了数百万行的大表中执行这个函数的话,,可以要花很长时间才能返回 整个表的
当我们想统计数据表的记录总数时,我们使用的T-SQL函数count(*) 。如果在 一个包含了数百万行的大表中执行这个函数的话,,可以要花很长时间才能返回 整个表的记录总数,这导致了查询性能的下降。
一、常规办法:采用Count ()函数 每个数据库管理员知道如何使用count(*) 函数。SQL Server在执行这个函数 时,为了返回总表的行计数,需要对索引/表进行完整的扫描。因此建议DBA们尽 量避免针对整个表使用聚合函数count(*),因为它影响了数据库的性能。 下面我们来看个AdventureWorks数据库中的例子。 在查询分析器中执行下面的查询语句:
查询分析器执行后,显示有121317行。 当我们点击SQL Server 2005 Management Studio的工具栏上的“显示估 计的执行计划”图标时,我们可以得到以下的图表: 图1:count(*)函数的执行计划 从右到左来看,我们可以了解到SQL语句的执行过程: l 第一步中对整个表进行索引扫描,这是个非常耗时的过程(占81%)。 l 第二步中应用流聚合也较耗时(占19%)。 (编辑:莆田站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 分布式和/或并行SSIS处理
- 什么是集成显卡
- SQL2008空间数据类型--欧氏几何2类与方法
- sql-server – 来自sql server的高磁盘I / O还是高磁盘I /
- 花费 0.052asp站长网 www.aspzz.cn 秒(0.150 MB/秒)
- sql-server-2008 – SQL Server:锁定通信缓冲区资源死锁
- SQL 2005使用OUTPUT子句捕获数据插入时的标识值
- sql-server – 为什么GROUP BY语句中的通配符不起作用?
- sql-server – 如何有效地检查多列上的EXISTS?
- sql-server – 为什么这个查询不使用索引假脱机?
站长推荐
热点阅读