Que es mas eficiente?

13/01/2007 - 16:38 por Ana Zuluaga | Informe spam
Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el DELETE
sin preguntar (claro con el where correspondiente).

o sea:

a) IF (SELECT PK FROM TABLA WHERE PK=@PK)
DELETE TABLA WHERE PK=@PK

o

b) DELETE TABLA WHERE PK=@PK /*si no existe no borrara nada*/

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
13/01/2007 - 18:33 | Informe spam
Ana,

Si te refieres a las operaciones de I/O pues logicamente el segundo puesto
que accesara a la tabla una sola vez.


AMB

"Ana Zuluaga" wrote:

Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el DELETE
sin preguntar (claro con el where correspondiente).

o sea:

a) IF (SELECT PK FROM TABLA WHERE PK=@PK)
DELETE TABLA WHERE PK=@PK

o

b) DELETE TABLA WHERE PK=@PK /*si no existe no borrara nada*/






Respuesta Responder a este mensaje
#2 Gustavo Larriera (MVP)
14/01/2007 - 16:33 | Informe spam
Hola Ana Zuluaga,

Ana Zuluaga wrote:
Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el DELETE
sin preguntar (claro con el where correspondiente).



Es más eficiente hacer el DELETE.

Gustavo Larriera, MVP
Solid Quality
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://solidqualitylearning.com/blogs/glarriera/
Este mensaje se proporciona tal como es, sin garantías de ninguna clase
/ This message is provided "AS IS" with no warranties expressed or
implied, and confers no rights.
Respuesta Responder a este mensaje
#3 Carlos Sacristan
15/01/2007 - 13:34 | Informe spam
Será más eficiente el segundo siempre y cuando no tenga establecidas
relaciones de integridad con otras tablas.


"Ana Zuluaga" escribió en el mensaje
news:
Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el
DELETE sin preguntar (claro con el where correspondiente).

o sea:

a) IF (SELECT PK FROM TABLA WHERE PK=@PK)
DELETE TABLA WHERE PK=@PK

o

b) DELETE TABLA WHERE PK=@PK /*si no existe no borrara nada*/





Respuesta Responder a este mensaje
#4 Jose Mariano Alvarez
15/01/2007 - 14:45 | Informe spam
Por que dices lo de la integridad referencial?




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Carlos Sacristan" <nomail> wrote in message
news:
Será más eficiente el segundo siempre y cuando no tenga establecidas
relaciones de integridad con otras tablas.


"Ana Zuluaga" escribió en el mensaje
news:
Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el
DELETE sin preguntar (claro con el where correspondiente).

o sea:

a) IF (SELECT PK FROM TABLA WHERE PK=@PK)
DELETE TABLA WHERE PK=@PK

o

b) DELETE TABLA WHERE PK=@PK /*si no existe no borrara nada*/









Respuesta Responder a este mensaje
#5 Carlos Sacristan
15/01/2007 - 20:11 | Informe spam
Perdón, siempre va a requerir de menos lecturas la segunda opción que la
primera.

Realmente a lo que me refería (aunque no tenía que ver al final con la
respuesta) es que una operación DELETE no tiene porqué involucrar únicamente
a la tabla afectada por la operación. Es decir, que mientras que el SELECT
de la primera opción sólo va a hacer referencia a la tabla indicada, el
DELETE posterior no tiene porqué ser así; sin embargo, no tiene sentido
ejecutarlo por cuestiones de rendimiento porque no se ahorra nada (en el
mejor de los casos el número de operaciones a realizar será el mismo en la
opción a que en la b, y será cuando no existan registros que coincidan con
el criterio de búsqueda).

Espero no haber confundido a Ana


"Jose Mariano Alvarez"
escribió en el
mensaje news:
Por que dices lo de la integridad referencial?




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Carlos Sacristan" <nomail> wrote in message
news:
Será más eficiente el segundo siempre y cuando no tenga establecidas
relaciones de integridad con otras tablas.


"Ana Zuluaga" escribió en el mensaje
news:
Que es mas eficiente en el proceso de borrar un registro en una tabla?:

Preguntar si la pk existe antes del DELETE o simplemente ejecutar el
DELETE sin preguntar (claro con el where correspondiente).

o sea:

a) IF (SELECT PK FROM TABLA WHERE PK=@PK)
DELETE TABLA WHERE PK=@PK

o

b) DELETE TABLA WHERE PK=@PK /*si no existe no borrara nada*/













Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida