Cómo enumerar el recuento de filas de cada tabla en la base de datos. Algún equivalente de
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Publicaré una solución, pero otros enfoques son bienvenidos
sql-server
database
kristof
fuente
fuente
dtProperties
etc. Como esas son tablas de "sistema", no quiero informar sobre ellas.Un fragmento que encontré en http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021 que me ayudó:
fuente
JOIN
sintaxisfrom sysobjects t inner join sysindexes i on i.id = t.id and i.indid in (0,1) where t.xtype = 'U'
Para obtener esa información en SQL Management Studio, haga clic derecho en la base de datos, luego seleccione Informes -> Informes estándar -> Uso de disco por tabla.
fuente
fuente
Como se ve aquí, esto devolverá conteos correctos, donde los métodos que usan las tablas de metadatos solo devolverán estimaciones.
fuente
Salida:
fuente
Afortunadamente, el estudio de administración de SQL Server le da una pista sobre cómo hacer esto. Hacer esto,
Pause el seguimiento y eche un vistazo a lo que TSQL genera Microsoft.
En la última consulta probablemente verá una declaración que comienza con
exec sp_executesql N'SELECT
Cuando copie el código ejecutado en Visual Studio, notará que este código genera todos los datos que los ingenieros de Microsoft utilizaron para llenar la ventana de propiedades.
cuando realice modificaciones moderadas a esa consulta, obtendrá algo como esto:
Ahora la consulta no es perfecta y puede actualizarla para cumplir con otras preguntas que pueda tener, el punto es que puede usar el conocimiento de microsoft para llegar a la mayoría de las preguntas que tiene ejecutando los datos que le interesan y rastrear el TSQL generado usando profiler.
Me gusta pensar que los ingenieros de MS saben cómo funciona el servidor SQL y generará TSQL que funciona en todos los elementos con los que puede trabajar utilizando la versión en SSMS que está utilizando, por lo que es bastante bueno en una gran variedad de versiones prerviouse, actual y futuro.
Y recuerde, no solo copie, intente comprenderlo también, de lo contrario podría terminar con la solución incorrecta.
Walter
fuente
Este enfoque utiliza la concatenación de cadenas para producir una declaración con todas las tablas y sus recuentos dinámicamente, como los ejemplos dados en la pregunta original:
Finalmente esto se ejecuta con
EXEC
:fuente
La forma más rápida de encontrar el recuento de filas de todas las tablas en SQL Refreence ( http://www.codeproject.com/Tips/811017/Fastest-way-to-find-row-count-of-all-tables-in-SQL )
fuente
Lo primero que se me ocurrió fue usar sp_msForEachTable
sin embargo, eso no enumera los nombres de las tablas, por lo que se puede extender a
El problema aquí es que si la base de datos tiene más de 100 tablas, recibirá el siguiente mensaje de error:
Así que terminé usando la variable de tabla para almacenar los resultados.
fuente
La respuesta aceptada no funcionó para mí en Azure SQL, aquí hay una que sí, es súper rápida e hizo exactamente lo que quería:
fuente
Este script sql proporciona el esquema, el nombre de la tabla y el recuento de filas de cada tabla en una base de datos seleccionada:
Ref: https://blog.sqlauthority.com/2017/05/24/sql-server-find-row-count-every-table-database-efficiently/
Otra forma de hacer esto:
fuente
Creo que la forma más corta, rápida y sencilla sería:
fuente
Podrías probar esto:
fuente
fuente
De esta pregunta: /dba/114958/list-all-tables-from-all-user-databases/230411#230411
Agregué un recuento de registros a la respuesta proporcionada por @Aaron Bertrand que enumera todas las bases de datos y todas las tablas.
fuente
Puede copiar, pegar y ejecutar este código para obtener todos los recuentos de registros de la tabla en una tabla. Nota: el código se comenta con instrucciones
He probado este código y funciona bien en SQL Server 2014.
fuente
Quiero compartir lo que me funciona.
La base de datos está alojada en Azure y el resultado final es:
Crédito: https://www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database/
fuente
Si usa MySQL> 4.x puede usar esto:
Tenga en cuenta que para algunos motores de almacenamiento, TABLE_ROWS es una aproximación.
fuente
Aquí
indid=1
significa un índice agrupado yindid=0
es un HEAPfuente