Si alguna vez trataste de hacer un SELECT count(*) en una tabla muy grande, debes de saber cuanto tiempo puede llevarse acabo esto, generalmente en tablas de millones de registros son minutos. Existe una manera más eficientes de hacerlo.
Por ejemplo, cuando se ejecuta el siguiente comando en una tabla de 10 millones de registros, tarda más de un minuto en darme el resultado, esto debido a que SQL Server debe de llevar a cabo varios I/O para realizar la cuenta.
SELECT COUNT(*) from
Una manera más eficiente y rápida de contar los registros de cualquier tabla es ejecutando el siguiente query:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID(' ') AND indid < 2
Al ejecutar este query toma menos de un segundo en darme el mismo resultado que el anterior, y practiamente no hace I/O. Esto se debe a que esta tabla guarda el número de registros de todas las tablas. Así que en lugar de estar contando los registros solo es necesario ver la tabla sysindexes.
Se debe de tener cuidado cuando se quiere un numero exácto de registros, ya que esta tabla no se actualiza en linea. También es necesario que se tenga habilitada la opción de "Auto create statistics" de la base de datos.