T-SQL按标准计算行的最快方法

时间:2013-11-14 11:19:47

标签: sql database performance tsql

根据某些标准获取行数最快的方法是什么? 我有一张桌子:transactions(id int (PK), userId int, typeId int, dateCreated date, (and about 5-6 additional columns))
该表有数百万行。

现在我需要检索此表中记录的计数... count的条件可以是一到三列(userId, typeId, dateCreated)的任意组合,而dateTime可以是“from”和“To”。

为了以最快的方式获取计数,应该是什么查询和索引?是否可以仅使用索引/统计信息来获取行数,而无需读取实际的表数据? 在这种情况下,count(*)count(id)会对效果产生影响吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试从索引中获取它,我不确定它是否100%准确但您不会错过超过几行的计数。

select ob.name,  ix.rowcnt 
from sys.sysindexes ix
join sys.sysobjects ob ON ix.id = ob.id 
where ob.xtype = N'U' and ob.name = N'MyTable'

请注意,这样您就可以获得所有桌子的计数一次。 obs:注意它为表中的每个索引返回一个值