我想知道只是为了好奇,来自SoMetableName的Select Count(*)也会从SoMetableName中的Select *的所有行中遍历数据库的所有行?
或者数据库的元数据中是否有任何其他计数字段可以在每次添加或删除行时自动更新?该字段由前一个查询访问.
另外我想知道两个查询哪一个更快,多少?
解决方法
SELECT Count(*) FROM SoMetableName
将始终计数所有行.虽然(不同于SELECT *),它不必读取所有列,并且可以使用可用的最窄(非过滤)索引.
与MysqL(MyISAM引擎)不同,它不会从元数据中检索值.
元数据中有一个行计数值,可从sys.partitions
检索,但这并不总是准确的.