程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2005中如何提升記錄總數統計的性能

SQL Server 2005中如何提升記錄總數統計的性能

編輯:關於SqlServer

當我們想統計數據表的記錄總數時,我們使用的T-SQL函數count(*) 。如果在 一個包含了數百萬行的大表中執行這個函數的話,,可以要花很長時間才能返回 整個表的記錄總數,這導致了查詢性能的下降。

一、常規辦法:采用Count ()函數

每個數據庫管理員知道如何使用count(*) 函數。SQL Server在執行這個函數 時,為了返回總表的行計數,需要對索引/表進行完整的掃描。因此建議DBA們盡 量避免針對整個表使用聚合函數count(*),因為它影響了數據庫的性能。

下面我們來看個AdventureWorks數據庫中的例子。

在查詢分析器中執行下面的查詢語句:

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

查詢分析器執行後,顯示有121317行。

當我們點擊SQL Server 2005 Management Studio的工具欄上的“顯示估 計的執行計劃”圖標時,我們可以得到以下的圖表:

圖1:count(*)函數的執行計劃

從右到左來看,我們可以了解到SQL語句的執行過程:

l 第一步中對整個表進行索引掃描,這是個非常耗時的過程(占81%)。

l 第二步中應用流聚合也較耗時(占19%)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved