2013-03-02 106 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); 

是否有查詢從表中X,Z的數據更好的解決方案?我想要附近的東西

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 2013-03-02 03:43:15

+0

查詢有什麼問題? – Oliver 2013-03-02 03:45:26

+0

@DiMono這是我的英語,男人,我應該說'最好的表現' @Oliver我不知道從表x,y或z開始,使用inner,outer,left,right還是any其他變化我還不知道... – 2013-03-02 03:57:24

回答

1

MySQL有一個內置的Query Optimizer,所以無論你放置表和連接的順序如何。選擇使用哪種類型的連接不是性能問題,而是取決於您希望返回的結果1

在正確的列上添加索引以獲得可靠的查詢性能也很重要。