publikaccion @publikaccion
Mostrando entradas con la etiqueta query. Mostrar todas las entradas
Mostrando entradas con la etiqueta query. Mostrar todas las entradas

jueves, febrero 23, 2017

Significado de count(1)

Cuando queremos emplear la función count(), para realizar un "cuenteo" del número de registros de una tabla, otra forma de afrontar la consulta en lugar del muy usado count(*), se puede emplear el menos común count(1).

Veamos un ejemplo


    select count(1) into l_num_rec_count 
        from [Table Name] where 1=1
            and [condition1] 
            and [condition2]; 

esta forma de realizar el cuenteo, lo que hace es sumar el número de "NON-NULL 1's" que devuelve la query, que es lo mismo que emplear "count(*)".

A todos los efectos count(1) es count(*) disfrazada :o)

Formas de obtener el total de registros de una tabla

Para obtener el total de registros de una tabla, se pueden emplear las siguientes estrategias de consulta

- consultar tablas del sistema


      select NUM_ROWS from ALL_TABLES 
            where TABLE_NAME = <TABLE_NAME_IN_UPPERCASE>

- emplear índices de la tabla


      select /*+ index(r REPARTO_FECHA_I) */ 
            count(r.FECHA) from REPARTO r where 1=1;

- emplear ejecuciones parallel para la tabla


      select /*+ parallel */ count(*) from <table_name>

- por medio de la columna de cualquier "primary key" de la tabla


      select count(<Primary_Key_col>) from <table_name>

He intentando poner de la opción más rápida a la menos rápida y desesperante...