Mostrando entradas con la etiqueta count. Mostrar todas las entradas
Mostrando entradas con la etiqueta count. Mostrar todas las entradas

miércoles, 20 de agosto de 2014

ORACLE: optimización de consultas basico

Utilización de campos específicos en lugar del *

  • Count(*)

Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta no debería utilizar el * ya que la base de datos va y busca las columnas definidas de la tabla(y esto por pequeño que sea toma tiempo) en estos casos puedes hacer algo así:

select count(1) from usuario ;  --bien
el 1 representa el primer campo de la tabla
ó
select count(campo) from usuario ; --bien


y no usar
select count(*) from usuario ; --mal

En conclusión el tiempo que se toma en ejecutar el segundo query es menor el que se toma si el query tiene el count(*).


  • Select *

En algunas ocasiones no especificamos en nuestro código que campos específicamente vamos a utilizar de una tabla y utilizamos el *,pues cuando utilizamos el * y vamos a utilizar la mitad de los campos lo que sucede es que ocupamos mas recursos de la base de datos e incluso ocupamos mas red para llevar los datos al sistema que ejecuto la consulta.

Select  campo1, campo2,campo2 from tabla;  --bien

select * from tabla ; -- mal




martes, 23 de agosto de 2011

ORACLE:Drop , delete and truncate

Hola a todos, hoy les comparto algunos trucos aplicables para Oracle que he aprendido.

Truncate o Delete

Cuando vas a borrar todos los registro de una tabla en la base de datos generalmente hacemos

delete from usuario;

Cuando hacemos un delete la base de datos borra uno a uno los registros de la tabla, los almacena por así decirlo en cache por si de pronto vamos a hacer rollback, esto ocupa mas tiempo y espacio en la db sin mencionar que la mantiene bloqueada durante el proceso.

El truco es utilizar truncate porque es mas rápido básicamente consiste en mover el índice del registro en el cual estaba el último registro de la bd al primer registro y no borramos uno a uno sino que como el registro queda en el inicio entonces es como si no hubiera nada.

Como utilizarlo?, es sencillo:

truncate usuario;


En conclusión , si estas seguro de que vas a borrar todos los datos y no te vas a arrepentir es mejor truncate.

Drop .. purge

Cuando borramos una tabla de la base de datos oracle, dependiendo de la forma en la que borremos la tabla va a ser eliminada completamente o solo aparentemente borrada, veamos el siguiente código


drop table usuario;


La tabla se borra pero realmente queda almacena como una papelera, la prueba esta en que el tamaño del tablespace no disminuye. La alternativa para que realmente quede eliminada la tabla y no nos ocupe espacio es agregar al final la palabra purge y quedaría así.


drop table usuario purge;


Este último truco me lo dio Diego M.