Una de las instrucciones típicas cuando trabajamos con cualquier motor de base de datos es hacer un COUNT para saber el número de registros o filas que tiene una tabla. Así nos hacemos una idea de su dimensión. O de cuántas filas debería devolver una consulta. En este artículo vamos a centrarnos en cómo obtener el número de registros de una tabla en SQL Server.
Lo típico es hacer un COUNT(*) sobre la tabla:
SELECT COUNT (*) FROM tabla
Pero esto no es lo más óptimo y si la tabla es grande puede demorarse demasiado. Con el asterisco, estamos seleccionando todos los campos de cada fila. Esto nos da igual ya que sólo queremos que nos devuelva un número. Así que una manera un poco más óptima de hacerlo, sería la siguiente.
SELECT COUNT (1) FROM tabla
Hemos cambiado el asterisco (*) por un número (1). Así por cada fila devolverá un 1, independientemente de su contenido. Lo cual a nivel de memoria suele ser más óptimo, aunque en la práctica no se nota tanto la diferencia, ya que muchas veces esto ya está optimizado. Pero no está de más ponerlo por si trabajamos con una versión que no lo tenga bien optimizado.
Pero en SQL Server, existe una manera mucho más óptima de obtener el número de filas de una tabla. Esta forma se basa en las tablas de diccionario del motor de base de datos. Es la siguiente:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('tabla') AND indid < 2;
Gracias