Tengo una tabla MySQL. Vamos a llamarlo Widgets. La tabla de widgets tiene 3 campos: id, type_id y name. Quiero, en una consulta, obtener todos los widgets que comparten un type_id con el Widget llamado 'doodad'. He escrito 2 consultas:MySQL WHERE-IN Subquery ejecuta Forever
- Dame la type_id del widget con el nombre 'doodad'.
- Dame todos los widgets con ese type_id.
Esto funciona. Cada consulta, independientemente, logra su objetivo.
Pero cuando los combino en una sola consulta anidada, se ejecuta para siempre, estilo de ciclo infinito. Se ve así:
SELECT * FROM widgets WHERE type_id IN (
SELECT type_id FROM widgets WHERE name = 'doodad'
);
¿Alguien puede explicar esto? ¿Es porque estoy escribiendo una consulta anidada que está operando en la misma tabla dos veces?
Little wheel, why spinnest thou?
La razón por la que estoy usando una subconsulta DONDE-IN se debe a que anteriormente estaba usando un JOIN y contra la base de datos de 2 millones de widgets, tardó más de dos minutos en ejecutarse. Como 2 consultas separadas, el tiempo de ejecución es menor a un segundo. – Whit
@Whit - He encontrado un par de soluciones alternativas que puede intentar ver si puede hacer funcionar el "en". –
No puedo creer que 6 años después de que se inventó constify, esto todavía no es parte de mysql. ¿No es solo un alias para crear manualmente una tabla temporal y unirnos a ella? – fastmultiplication