MySQL. Запрос к нескольким таблицам по фен-шую!:)

MySQL базы данных оптимизация

Зачастую требуется извлечь, к примеру ФИО автора из другой таблицы по ID, как это сделать?:)

Каким из ниже приведённых методов быстро, удобно, целесообразно пользоваться при работе с несколькими таблицами и почему? :)
Методы:
1. Несколько запросов.
2. Многотабличный запрос.
3. Вложенный запрос.

Для примера создадим простейшие таблицы:
CREATE TABLE tb1 ( id_tb1 INT(11) NOT NULL AUTO_INCREMENT, id_tb2 INT(11),
PRIMARY KEY (id_tb1));

CREATE TABLE tb2 (id_tb2 INT(11) NOT NULL AUTO_INCREMENT, name_tb2 TINYTEXT,
PRIMARY KEY (id_tb2));

Вариант 1: Использование нескольких запросов.
SELECT id_tb2 FROM tb1 // 1-й запрос
$myrow = mysql_fetch_assoc();
SELECT name_tb2 FROM tb2 WHERE id_tb2 = $myrow[id_tb2] // 2-й запрос

Вариант 2: Использовать многотабличный запрос
SELECT tb2.name_tb2 FROM tb1 JOIN tb2 USING(id_tb2);

Вариант 3: Использовать вложенный запрос
SELECT name_tb2 FROM tb2 WHERE id_tb2 = (SELECT id_tb2 FROM tb1);
Ответы:
2 или 3
помоем покажет только тестирование в конкретно взятом вашем случае
если требуется подбирать несколько раз внутри одной процедуры ФИО то однозначно JOIN
Вариант 2 будет быстрее всего - вложенные запросы почему-то очень медленные


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.