Este blog esta destinado para la comunidad desarrolladora de software, en el podrán encontrar trucos, atajos o consejos de diferentes lenguajes de programación o frameworks, tanto de tipo desktop como web. Si quieres participar como editor por favor hacerlo saber escribiendo un correo a cualquiera de los editores.

martes, 23 de agosto de 2011

Trucos oracle

Hola a todos, hoy les comparto algunos trucos aplicables para Oracle que he aprendido y que nos pueden ser utiles por optimización de tiempo o espacio en las bd.

Count(*)

Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta, no deberias 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 asi:

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


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(*).

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 asi decirlo en cache por si depronto vamos a hacer rollback, esto ocupa más tiempo y espacio en la db sin mencionar que la mantiene bloqueada durante el proceso.(bloqueada quiere decir que si otros usuario la estan consultando la transación queda en cola y no es atendida hasta que la transación que esta haciendo el borrado la libera).

El truco es utilizar truncate porque es mas rápido basicamente consiste en mover el indice 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, sencillo:

truncate usuario;//donde usuario es la tabla


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 asi.


drop table usuario purge;


Este último truco me lo dio Diego M.

Nota: Porfa perdonen mi ortografia.

No hay comentarios: