Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/02/2012, 19:16
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Duda optimizacion sentencias sql

Siempre es más eficiente agregar las dos columnas en una única sentencia, aunque la ventaja puede ser más o menos apreciable dependiendo el caso.

1. Si agregar las columnas requiere modificar las filas (ADD column_name1 NOT NULL DEFAULT valor, column_name2 NOT NULL DEFAULT valor) el comando ALTER TABLE ejecuta un update de toda la tabla para que las columnas nuevas tengan el valor por defecto, en este caso y con tablas de gran tamaño, la ventaja será más evidente, por ejemplo:

Código:
alter table t1 add 
 c1 int not null default 1, 
 c2 int not null default 2
--internamente el motor ejecuta un update
--update t1 set c1=1, c2=2

--vs

--dos update, uno por cada alter table
alter table t1 add 
 c1 int not null default 1 
--update t1 set c1=1
alter table t1 add 
 c2 int not null default 2
--update t1 set c2=2
2. Si agregar las columnas no requiere modificar las filas (ADD column_name1, column_name2) la operación será inmediata y la ventaja no tan evidente, pero teniendo en cuenta que un ALTER TABLE hace un lock sobre la tabla, es de sentido común agregar las dos columnas con un solo lock que hacer un lock por cada columna.

Saludos