Tablas temporales en el Transa-SQL



Podemos usar dos trucos para programar en procedimientos almacenados en T-SQL:

1. Usar tablas temporales en disco:

Estas se crean como cualquier tabla:

'Create table #MiTabla(valor1 tipoDeDato1, ...)'

Asi que la unica diferencia con crear una tabla realmente es el signo # y podemos hacer inserciones y todo lo que querramos. Se supone que esta se elimina al terminar el procedimiento o la sesión del usuario, sin embargo para fines de efectividad se recomienda hacerle un 'delete table #MiTabla' en cuanto esta ya no se necesite ya que estas tablas se crean en disco duro. Lo que todavia no he comprobado es si se crea una tabla temporal por sesión o todos los usuarios acceden a la misma tabla, lo cual nos podria traer algunos problemas de concurrencia...

2. Usar tablas temporales en memoria:

Estas estan un poco mejor y quiero suponer que no tendremos problemas de concurrencia con ellas ya que son declaradas como una variable:

'declare @MiTabla TABLE(valor1 tipoDeDato1, ...)'

para despues poder utilizarse como cualquier tabla comun y corriente.

Asi que el top-ten de uso en efectividad es el siguiente:

1. Tablas.
2. Tablas temporales en memoria.
3. Tablas temporales en disco.
4. Cursores.

Curiosamente ocupa menos procesamiento accesar el disco que declarar un cursor en memoria, los cursores pueden ser utiles en registros no mayores a 300, para el resto se recomienda el uso de tablas temporales, claro que todo depende de los requerimientos de tu sistema.

Referencias: http://sql.manivesa.com/Tutoriales+SQL/SQL+Server/550.aspx

No hay comentarios.: