SQL中對於求表記錄總數的有count這個聚合命令,這個命令給我們感覺就是快,比一般的查詢要快,但是,當你的數據表記錄比較多時,如百萬條,千萬條時,對於count來說,就不是那么快了,我們需要掌握一些技巧,來優化這個count。
有人說:
select count(1) from table
select count(primarykey) from table
比較快,一定不要用
select count(*) from table
可我要說的是,count(*)更快一些,為什么呢,count(*)是什么意思?事實上,它真正的含義是找一個占用空間最小的索引字段,然后對它進行記數,不要一看到*就認為“大”,在count命令中,它指的是“任意一個“。
對於一個大表來說,如果你的字段有bit類型,如性別字段,表示真假關系的字段,我們需要為它加上索引,加上之后,我們的count速度就提交幾十倍,真的,呵呵
首先為我們的bit類型字段加索引IsSync添加聚集索引
如果數據表太大,我們需要在命令行中去運行
之后,再去運行count命令,呵呵
SET STATISTICS IO ON --查看IO開銷 SET STATISTICS PROFILE ON --查看分析、編譯和執行查詢所需的時間 SET STATISTICS TIME ON --查看語句運行的時間 SELECT COUNT(*) FROM dbo.C_User_Info
結果比沒有建立索引時快了10多倍!