2013-03-02 4 views
-1

подходит, чтобы попросить вашу помощь. Рассмотрим таблицы ниже, со следующими данными:MySQL лучший способ запросить данные из этих трех таблиц

DROP SCHEMA IF EXISTS `jointest`; 
CREATE SCHEMA `jointest`; 
USE `jointest`; 

CREATE TABLE x (id INT PRIMARY KEY AUTO_INCREMENT , field VARCHAR(20)); 
CREATE TABLE z (id INT PRIMARY KEY AUTO_INCREMENT, field VARCHAR(20)); 
CREATE TABLE y (id_x INT, id_z INT, PRIMARY KEY (id_x, id_z)); 

INSERT INTO x VALUES (NULL,"Good Morning,"), (NULL,"Good Night,"), (NULL,"Bye"); 
INSERT INTO z VALUES (NULL, "Dad"), (NULL, "Mom"), (NULL, "Bro!"); 
INSERT INTO y(id_x, id_z) values(1,1), (1,2), (1,3), (2,1), (2,2), (3,3); 

Есть ли лучшее решение для извлечения данных из таблиц х, г? Я бы кое-что поддержал

SELECT x.field, z.field 
FROM y 
    INNER JOIN x ON (y.id_x = x.id) 
    INNER JOIN z ON (y.id_z = z.id) 
ORDER BY x.id; 

Спасибо за помощь!

+0

Лучшее решение, чем то, что? Чем запрос вы показываете? – DiMono

+0

Что не так в вашем запросе? – Oliver

+0

@DiMono Это мой английский, человек, я должен был сказать «лучшая производительность» @Oliver Я не знаю, было бы лучше начать с таблиц x, y или z, используя внутренний, внешний, левый, правый или любой другой вариант пока не знаю ... –

ответ

1

MySQL имеет встроенный Query Optimizer, поэтому не имеет значения, в каком порядке вы ставите таблицы и объединяетесь. Выбор типа подключения для использования не является проблемой производительности, а скорее зависит от того, какие результаты вы хотите вернуть 1.

Также важно добавить индексы в соответствующие столбцы, чтобы получить надежную производительность запросов.

Смежные вопросы