Como seguramente ya sabrás, usar la función COUNT(*) en tablas que tienen muchas filas no es una buena idea, porque como el Firebird no guarda la cantidad de filas que tiene cada tabla en algún lado, lo que hace la función COUNT() es recorrer la tabla desde el principio hasta el fin y contar cuantas filas hay en total.

Y claro que en tablas pequeñas, que tienen solamente algunas miles de filas no hay problema porque la función COUNT() trabaja muy rápido, pero en tablas grandes de millones y millones de filas es otra cosa, allí la espera puede ser desesperante.

Por eso, el siguiente stored procedure solamente es recomendable de ejecutar cuando todas las tablas de tu Base de Datos tienen pocas filas, o en casos excepcionales cuando necesitas conocer la cantidad de filas de cada tabla.

Este stored procedure seleccionable te mostrará, para cada tabla de tu Base de Datos, la cantidad de filas que tiene.

SET TERM ^ ;
CREATE PROCEDURE CANTIDAD_FILAS
RETURNS(
   NOMBRETABLA VARCHAR(32),
   FILAS INTEGER)
AS
DECLARE VARIABLE COMANDO VARCHAR(80);
BEGIN

 FOR SELECT RDB$RELATION_NAME
       FROM RDB$RELATIONS
      WHERE RDB$FLAGS = '1'
       INTO :NombreTabla
       DO BEGIN
          Comando = 'SELECT COUNT(*) FROM ' || :NombreTabla;
          EXECUTE STATEMENT COMANDO
          INTO :Filas ;
          SUSPEND;
       END

END^

SET TERM ; ^

Para ejecutarlo, escribe lo siguiente:

SELECT
   *
FROM
   CANTIDAD_FILAS