数据库技巧

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 数据库子站 > 数据库技巧

SQL Server 2005中如何提升记录总数统计的性能

作者:林善茂出处:IT专家网2008-10-27 09:26

  【IT专家网独家】  当我们想统计数据表的记录总数时,我们使用的T-SQL函数count(*) 。如果在一个包含了数百万行的大表中执行这个函数的话,,可以要花很长时间才能返回整个表的记录总数,这导致了查询性能的下降。

  一、常规办法:采用Count ()函数

  每个数据库管理员知道如何使用count(*) 函数。SQL Server在执行这个函数时,为了返回总表的行计数,需要对索引/表进行完整的扫描。因此建议DBA们尽量避免针对整个表使用聚合函数count(*),因为它影响了数据库的性能。

  下面我们来看个AdventureWorks数据库中的例子。

  在查询分析器中执行下面的查询语句:


  use AdventureWorks
  go
  select count (*) from Sales.SalesOrderDetail

  查询分析器执行后,显示有121317行。

  当我们点击SQL Server 2005 Management Studio的工具栏上的“显示估计的执行计划”图标时,我们可以得到以下的图表: 

SQL Server 2005中如何提升记录总数统计的性能

  图1:count(*)函数的执行计划

  从右到左来看,我们可以了解到SQL语句的执行过程:

  l 第一步中对整个表进行索引扫描,这是个非常耗时的过程(占81%)。

  l 第二步中应用流聚合也较耗时(占19%)。

相关文章

关键词: 技巧

责任编辑:李书琴

专题推荐

原创文章

微博互动

白皮书

网警备案