Ahh pero que desagradable, no hay caso... no quería hacer la consulta por este 
medio porque sé que existen individuos como este tal rodrigo.... muerdete la 
lengua hombre! (dedos) que omitas tus comentarios que no me interesan.-


----- Mensaje original ----

De: Rodrigo Fuentealba <[EMAIL PROTECTED]>
Para: Discusion de Linux en Castellano <[email protected]>
Enviado: martes, 30 de septiembre, 2008 20:26:44
Asunto: Re: Mysql, consulta registro sin integridad referencial

Lorenzo Ponce <[EMAIL PROTECTED]> escribió:
> Estimados, en primer lugar, no sé si esta es la lista
> adecuada por lo que no vi una de base de datos,
> si no lo es, favor indicar (con una vez basta).

En general tratamos temas relacionados con bases de datos.

> Tengo una base de datos MyISAM (MySQL), y
> tengo la necesidad de rescatar datos de una
> tabla cuya integridad referencial no existe.

MyISAM... ¿por qué torturan tanto a la gente?

> Es sencillo sacar los que tienen su PK con la
> FK en otra tabla, WHERE idCampo=fkCampo,
> pero lo que quiero es sacar aquellos registros
> que NO tienen hecha la relación.

SELECT tabla1.campo FROM tabla1, tabla2 WHERE tabla1.campo1 NOT IN
(SELECT tabla2.campo2 FROM tabla2);

Eso, ¿cierto?.

http://dev.mysql.com/doc/refman/5.0/en/rewriting-subqueries.html

Haz un query rewrite como el que sigue:

SELECT tabla1.*
  FROM tabla1 LEFT JOIN tabla2 ON tabla1.id=tabla2.id
  WHERE tabla2.id IS NULL;

Con eso deberías tener un improvement.

> He intentado usando selects anidados y funciones
> como NOT IN, lo cual funciona bien con pocos registros

Querrás decir "funciona".

> pero al crecer la cantidad de registros se torna demasiado
> lento por los selects que debe hacer en cada vuelta.

El optimizador de MySQL es horrible.

> Me gustaría me indicaran alguna solución más eficiente.
> Me imagino que llenar de OR la consulta sería poco eficiente
> también.

Yo no veo la forma simple de hacerlo con OR. Por algo parecido mandé a
un tipo a repetir Bases de Datos I.

> Favor, omitir comentarios del tipo cámbiate a postgres,
> u otros, que no contribuyan a la solución de codificación
> requerida.

No te preocupes; no te cambies a PostgreSQL, si al total, son datos de
un cliente nada más, no importa ni integridad ni consistencia ni una
base de datos decente.... (sarcásticamente hablando, claro).

Saludos,

-- 
Rodrigo Fuentealba


      
____________________________________________________________________________________
Premios MTV 2008¡En exclusiva! Fotos, nominados, videos, y mucho más! Mira aquí 
http://mtvla.yahoo.com/
From [EMAIL PROTECTED]  Tue Sep 30 23:12:15 2008
From: [EMAIL PROTECTED] (Rodrigo Fuentealba)
Date: Tue Sep 30 23:12:20 2008
Subject: Mysql, consulta registro sin integridad referencial
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

El día 30 de septiembre de 2008 22:26, Lorenzo Ponce
<[EMAIL PROTECTED]> escribió:
> Ahh pero que desagradable, no hay caso...

Te doy una respuesta con todo y documentación, ¿y alegas? A lo mejor
si te hubieras explicado bien y no te hubieras puesto el parche antes
de la herida, habrías recibido tu respuesta y habrías dejado al resto
contento alegando y discutiendo nuevamente sobre la tortura de usar
MyISAM ;-)

> no quería hacer la consulta por este medio porque sé
> que existen individuos como este tal rodrigo....

Sí, a veces somos densos por el mail, pero no te lo tomes tan a pecho
hombreee, si al final cuando conoces a la gente te das cuenta de que
muchos de ellos son muy buena onda. Comienza por asumir buena fe de
alguien que te responde y te da una sugerencia. Tal vez tiene sus
razones para responder ácidamente contra algo.

> muerdete la lengua hombre! (dedos)

Nah, mi polola me tiene prohibido comer lengua humana.

Saludos,

-- 
Rodrigo Fuentealba

Responder a