Me seria de muchisima utilidad que alguien entendido en MySQL pueda darme una mano con el siguiente problema. Lo simplifico con un ejemplo basico para poder dejar en claro que es lo que sucede.
Tengo las siguientes tablas:
tbl_personas:
id INT AUTOINCREMENT (Primary key)
nombre VARCHAR (200)
tbl_personassabores:
id INT NOT AUTOINCREMENT (Primary key)
persona INT
sabor INT
tbl_saboreshelado
id INT NOT AUTOINCREMENT (Primary key)
sabor VARCHAR (50)
Quiero saber, por ejemplo, a cuanta gente le gusta el helado de chocolate y/o de vainilla (id's 1 y 2 en la tabla tbl_saboreshelado).
La consulta que ejecuto es la siguiente:
SELECT COUNT(DISTINCT p.id) FROM tbl_personas as p LEFT JOIN tbl_personassabores as s ON p.id = s.persona WHERE s.sabor = 1 OR s.sabor = 2
Hasta aca todo bien, si tengo 100 personas y 200 relaciones persona/sabor, no hay problema.
El problema es que si tengo 1.000.000 de personas y 2.000.000 relaciones, la consulta jamas termina.
Tengo entendido que la estructura de MySQL bien utilizada tiene que soportar este tipo de busquedas, pero algo estoy haciendo mal, quizas usar JOIN en este caso no es lo adecuado, pero, en el ejemplo, ¿como puedo encontrar la cantidad de personas que se relacionan con un determinado sabor de helado si no es de esta forma?
Bueno, espero haber sido claro.
Saludos y gracias por su tiempo.