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

buscar indices primarios faltantes

Estas en el tema de buscar indices primarios faltantes en el foro de Mysql en Foros del Web. Hola gente, a ver si me pueden ayudar, estoy necesitando hacer una consulta pero no doy con el método... resulta que tengo una tabla donde ...
  #1 (permalink)  
Antiguo 09/02/2011, 12:16
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
buscar indices primarios faltantes

Hola gente, a ver si me pueden ayudar, estoy necesitando hacer una consulta pero no doy con el método...
resulta que tengo una tabla donde vuelco información mediante curl de php desde una web a la mía. Mi script tiene un bucle que autoincrementa el número de id a buscar lo lee y si existe lo copia en mi tabla. El problema es que la base de datos de origen va intercalando los id conforme pasan los días, por ejemplo si hoy levanto los datos encontraré fichas con id 1, 2, 5, 9, 11 y mañana 3, 4, 7, 8, 10 por eso he tenido que hacer que siempre lea desde el primero, ahora como son 10000 se hace un poco lenta la carga. Pensé entonces que el bucle primero mire si el número a buscar ya existía en mi tabla y si existía pase al siguiente y sino que corra el curl, pero esto no aligeró demasiado el proceso....

Mi pregunta es existe alguna consulta que yo pueda hacer en mi base de datos y me devuelva las filas que no existan? los estoy guardando como ids primarios. Supongo que un select no ha de ser porque como ha de seleccionar algo que no existe?

Agradeceré si me dan alguna pista por donde buscar...
Mil gracias
  #2 (permalink)  
Antiguo 10/02/2011, 07:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: buscar indices primarios faltantes

No, eso no existe por una razon muy obvia, el resultado seria infinito....

Lo que si puedes hacer es ver lo que si existe y luego solo leer de la otra base de datos los que no cincidan...


SELEC * FROM laotrabase WHERE id NOT IN (los de tu base)

Ejemplo

Si en la tabla de tu base tienes 1,3,7,9,10

y en la otra base hay 1,2,3,4,5,6,7,8,9,10,25,19,33

SELEC * FROM laotrabase WHERE id NOT IN (1,3,7,9,10)

te dará 2,4,5,6,8,25,19,33

Juntandolo todo

Código MySQL:
Ver original
  1. INSERT INTO tubase
  2.        SELECT * FROM laotrabase
  3.        WHERE laotrabase.id NOT IN (SELECT id FROM tubase)

yo miraria tambien el tema de INSER OR UPDATE por si puede haber cambios en los registros que ya tienes....

12.2.5.3. INSERT ... ON DUPLICATE KEY UPDATE Syntax
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/02/2011, 11:05
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: buscar indices primarios faltantes


claro! es verdad! daría un resultado infinito!
Gracias, si, lo que me propones que haga es exactamente lo que hago, pero creo que eso retrasó aún mas el proceso, porque hago dos consultas en vez de ir a leer directamente la info que copio.
¿y si pusiera un límite? ¿por ejemplo si busco los que no existen del 1 al 10.000?
tampoco habría forma de hacer un select de algo que no existe verdad? no sé como sería la sintaxis... imaginaba que si hacía una lectura local primero y luego iba a buscar solo los id que necesitaba aceleraría el método...
Buenísimo el link que me pasaste, lo tendré en cuenta para otras cosas, en este caso por suerte no cambian, los id que ya subí ahí se quedan ;)
Gracias saludos
  #4 (permalink)  
Antiguo 11/02/2011, 01:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: buscar indices primarios faltantes

Tu hipotética solución tambien implica dos consultas....

La mia si los dos servidores se ven en una sola query (compuesta) lo haces todo... si no la consulta sobre tu base es una consulta que solo p¡de claves principales debería ser muy rápida.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 16/02/2011, 21:25
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: buscar indices primarios faltantes

Gracias quimfv, tengo solo acceso a un servidor, el mío, el otro lo leo y copio usando curl de php
pero conseguí solucionar el problema, tardaba el doble, porque agregue la comprobación en mi servidor pero olvidé comentar las líneas que copiaban a mi base todos los id... cuestión que estaba haciéndolo dos veces... cosas que pasan cuando uno no para a afilar el hacha...
Gracias igusl porque aquello tan obvio seguiría dando vueltas en mi cabeza...
Saludos

Etiquetas: indices
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 20:41.