MySQL: соединение (2 таблицы) против отдельных запросов (1 таблица)

В 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)?

5
задан caw 4 May 2011 в 11:09
поделиться