me di cuenta de algo extraño durante la ejecución de un grupo selecto de 2 tablas:MySQL Query Seleccione con sub-select lleva demasiado tiempo
SELECT * FROM table_1 WHERE id IN (
SELECT id_element FROM table_2 WHERE column_2=3103);
Esta consulta se llevó aproximativamente 242 segundos.
Pero cuando ejecuta la subconsulta
SELECT id_element FROM table_2 WHERE column_2=3103
tardó menos de 0.002s (y dio 2 filas).
Entonces, cuando lo hice
SELECT * FROM table_1 WHERE id IN (/* prev.result */)
que era la misma: 0.002s.
Me preguntaba por qué MySQL está haciendo la primera consulta de esa manera, tomando mucho más tiempo que las últimas 2 consultas por separado. ¿Es una solución óptima para seleccionar algo basado en los resultados de una subconsulta?
Otros detalles: table_1
tiene aprox. 9000 filas, y table_2
tiene 90000 filas.
Después de que agregué un índice en column_2
desde table_2
, la primera consulta tomó 0.15s.
¿cuántos resultados da la selección del interior? – Dani
¿Podría publicar el resultado de ejecutar 'EXPLAIN SELECT * FROM table_1 WHERE id IN (SELECCIONAR id_element FROM table_2 WHERE column_2 = 3103)'. Esto mostrará qué plan de consulta e índices está usando MySQL. –
@Dani la publicación indica que la consulta interna devuelve 2 filas. –