PDA

Ver la Versión Completa : Penalizacion al actualizar campo con indice


jabauti
25-04-2006, 11:04:35
Dentro de un método de actualización genérico válido para varias tablas ejecuto una sentencia UPDATE a la que se le pasan todos los valores de los campos de la tabla, aunque algunos valores no cambian respecto al valor que posee la base de datos. Mi pregunta es si existe alguna penalización por incluir en la sentencia un campo que es indice pero que no cambia su valor.
Por ejemplo, tengo una tabla T con campos C1,C2 y C3. Tanto C1 como C2 son campos índice. Actualmente hay un registro con los siguientes valores C1=99 C2="ABC", C3=1.
Si yo ejecuto una sentencia update UPDATE T SET C1=99,C2="ABC",C3=5 WHERE C1=99 en la que no cambian los valores de los campos índice ¿se realizaría una reindexación en la tabla por el hecho de incluirlos en el UPDATE o solo cambiaría el valor de C3 y ya está?
Gracias.

andressanchez
25-04-2006, 14:50:08
Lo que no entiendo es si los valores de c1 y c2 no cambian por qué quieres incluirlos en la actualización si el unico valor que va a cambier es el de c3. explicate mejor.

Ivanzinho
25-04-2006, 17:19:02
Aparte de lo que dice andres la consulta va a ocasionarte problemas en el caso de que tengas varios registros con el mismo valor en el campo c1, ya que tendrías varios registros con la misma clave primaria.

Edito para decir que me he equivocado, ya que pense que tanto C1 como C2 formaban la clave, pero lo que en realidad pone es que son campos indice :p:rolleyes::p

jabauti
25-04-2006, 21:59:03
La razón por la que intento actualizar campos que no cambian es por que estoy construyendo un motor de persistencia en el que las clases que representan tablas tienen un método 'actualizar' que coge los valores actuales de las propiedades del objeto y construye una sentencia UPDATE apropiada. Entonces en el momento de ejecutar la sentencia no sé qué valores cambian respecto a lo que hay en la base de datos y cuáles no.
Para eso tendría que hacer previamente una consulta a la base de datos y obtener el registro con esa clave primaria y comparar qué campos cambian, lo cual quiero evitar si no es necesario.
Lo que quiero es ver qué me compensa más hacer una consulta previa al registro que quiero actualizar o construir la sentencia UPDATE con todos los campos, cambien o no.

Saludos.:cool: