En PHP, que tienen una serie de 11 personas donde se da sólo el ID de cada persona:MySQL: Join (2 mesas) vs consultas individuales (1 mesa)
$persons = array(1, 3, 39, 72, 17, 20, 102, 99, 77, 2, 982);
en mi base de datos MySQL , hay una tabla que contiene información detallada sobre cada persona:
TABLE personInfo
- ID (integer)
- name (string)
- birth date (timestamp)
- weight (decimal)
- ...
PROBLEMA:
Así que ahora, quiero seleccione el nombre del juego para cada ID de la matriz PHP. Sólo puedo imaginar dos soluciones de hacer esto:
1. for-loop:
foreach ($persons as $person) {
$result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}
2. operador lógico O
$result = mysql_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");
Ambos soluciones son lentos, ¿no es así?
Pero si tuviera otra tabla de MySQL que contiene los ID de la matriz PHP ...
TABLE ids
- ID (integer)
... Podría utilizar una combinación de hacer una consulta MySQL muy rápido, ¿verdad?
$result = mysql_query("SELECT a.ID, b.name FROM ids AS a JOIN personInfo AS b ON a.ID = b.ID");
PREGUNTA:
¿Es todo esto correcto hasta ahora? Si es así: ¿Por qué es esto así? ¿La consulta de MySQL es más rápida si tengo una segunda tabla? ¿Con solo una mesa es increíblemente lento? ¿Cuál es la forma más rápida de resolver mi problema (seleccionando los nombres que coinciden con los ID de la matriz de PHP)?
Muchas gracias! Esto es exactamente lo que necesitaba. Entonces, para unos 20 parámetros, ambos enfoques tienen el mismo rendimiento. Pero para unos 500 parámetros, debería preferir la tabla temporal. – caw