Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

La mejor forma de insertar registros no repetidos

Estas en el tema de La mejor forma de insertar registros no repetidos en el foro de Mysql en Foros del Web. Hola amigos! Estoy buscando opiniones y sugerencias personales para encontrar la forma más correcta (o sea, que consuma poco tiempo y poco recursos) para guardar ...
  #1 (permalink)  
Antiguo 23/07/2010, 06:40
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
La mejor forma de insertar registros no repetidos

Hola amigos!

Estoy buscando opiniones y sugerencias personales para encontrar la forma más correcta (o sea, que consuma poco tiempo y poco recursos) para guardar registros en una bd mysql que no estén repetidos.

La única que se me ocurrió fue 1er hacer un select de todos los registros y fijarme con un where si el nuevo registro que voy a guardar se encuenta en la bd. Si ese select da como resultado true, entonces no guardo el nuevo registro, si da false, lo guardo ya que es un registro no repetido...

Es una solución simple, pero no me gusta mucho porque la veo "lenta". Hay alguna otra forma de hacer esto mas optimizado?

PD: Si es de importancia, estoy trabajando sobre PHP.

Un abrazo!
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #2 (permalink)  
Antiguo 23/07/2010, 06:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: La mejor forma de insertar registros no repetidos

Tablas temporales creadas dinámicamente sobre la base de la consulta entre ambas.
Obviamente estoy suponiendo que hablas de dos tablas, una de las cuales tiene registros a insertar en la otra...
Puede ser usando LEFT JOIN o bien con un NOT IN entre los campos del registro y los de la tabla origen. Para este caso deben ser tablas identicas en estructura y orden de campos.
Luego simplemente vuelcas el contenido de la temporal en la destino...
Pero sería mejor que nos describas las tablas implicadas (estructura completa) para ver cuál es la mejor opción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/07/2010, 07:00
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: La mejor forma de insertar registros no repetidos

¿Que campo quieres que no se repita? Porque si ese campo pudiera ser 'único' podrias crear una clave secundaria sin repeticiones y luego hacer todos los INSERT que quieras, que los que se repitan por dicho campo darían error y no se ejecutarian.

¿te sirve asi?
  #4 (permalink)  
Antiguo 23/07/2010, 07:22
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: La mejor forma de insertar registros no repetidos

gnzsoloyo muchas gracias por tu idea!

Vun, solamente no se tiene que repetir un campo! por lo que tu solución es también muy buena!.

La tabla solo tiene dos campos ID (autoincremental y primaria) y URL (UNIQUE). Así creada está bien?
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #5 (permalink)  
Antiguo 23/07/2010, 07:27
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: La mejor forma de insertar registros no repetidos

Supongo que sí, lo mejor es que crees una base de datos de pruebas, y ejecutes el código, a ver si queda como tu quieres.

Etiquetas: registros, repetidos, mejoras, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:00.