根据某些标准获取行数最快的方法是什么?
我有一张桌子: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)
会对效果产生影响吗?
谢谢。
答案 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:注意它为表中的每个索引返回一个值