В PHP у меня есть массив из 11 человек , где только идентификатор каждого человека дано:
$persons = array(1, 3, 39, 72, 17, 20, 102, 99, 77, 2, 982);
В моей базе данных MySQL есть таблица, содержащая подробную информацию о каждом человеке:
TABLE personInfo
- ID (integer)
- name (string)
- birth date (timestamp)
- weight (decimal)
- ...
ПРОБЛЕМА:
Итак, теперь я хочу выберите соответствующее имя для каждого идентификатора в массиве PHP . Я могу представить только два решения для этого:
1. цикл for:
foreach ($persons as $person) {
$result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}
2. логический оператор ИЛИ
$result = mysql_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");
Оба решения медленные , не так ли? они?
Но если бы у меня была другая таблица MySQL, содержащая идентификаторы массива PHP ...
TABLE ids
- ID (integer)
... я мог бы использовать соединение, чтобы сделать действительно быстрый запрос MySQL , верно?
$result = mysql_query("SELECT a.ID, b.name FROM ids AS a JOIN personInfo AS b ON a.ID = b.ID");
ВОПРОС:
Все ли пока правильно? Если да, то почему? Запрос MySQL выполняется быстрее, если у меня есть вторая таблица? С одним столом это невероятно медленно? Какой самый быстрый способ решить мою проблему (выбор имен, соответствующих идентификаторам массива PHP)?