2012-06-28 64 views
1

我已經在MySQL中實現兩個表...MySQL的加入或選擇其中tablename1.col1 = tablename2.col1

  id   name    password 

      1   name1    password1 
      2   name2    password2 

  id   age    address 

      1   age1    address1 
      2   age2    address2 

現在我需要的結果以組合形式選擇查詢

  id  name  password age address 

      1  ....  ........  ... ..... 
      2  ....  .. .. . .. ... .. 

現在,我想它使用兩個查詢如下...

SELECT * FROM table1, table2 WHERE table1.id=table2.id;

,也是我試過

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;

我沒有得到的結果,因爲我想... 但我只是想知道哪種方法比較好,實際上沒有列或數據條目......?

回答

2

通過a previous StackOverflow question,似乎性能往往大致相當。嘗試對這些查詢中的每一個運行EXPLAIN,以查看哪些數據集運行得更好 - 儘管MySQL很可能會對每個查詢執行相同的過程。

+0

好吧... m..sorry說...我已經嘗試EXPLAIN,因爲你說...但我不知道如何評估目前的情況下使用它...因爲在這種情況下相當業餘.. –

+0

@akp:是的,說明有時很難閱讀,但學習他們的意思是一種非常非常有價值的技能,可以隨身攜帶:) [這裏是MySQL的密集參考文檔](http://dev.mysql.com/doc/refman/5.0/en/explain-output.html) ,但如果這最終導致壓倒性的,我相信你可以在網上找到一個更直接的解釋。 – Matchu

0

最有效的方法是擁有一張表。沒有任何理由讓我看到如此分手

+2

可能只是爲了簡化我們這個問題的抽象。 – Matchu

+0

同意..我有兩種表格中只有一種經常使用的情況.....並且這種加入情況用於少數情況... –

+0

你可以使你的命令:SELECT age,address FROM supertable;如果你只需要訪問它的一部分。通常情況下,如果你是一對一的映射,你不想分割表。這意味着,因爲每個名稱和密碼只有一個年齡和地址,反之亦然,您應該使用一張表來存儲所有這些數據。但是,正如路易斯暗示的那樣,情況可能並非如此,您給我們提供了一個簡化的視圖。在這種情況下,你的問題將是相關的。假如你想爲每個名字保留多個地址,但在這種情況下你不會把年齡放在地址上;只有身份證。 –

0

什麼是「更好」?兩種方法都是有效的,速度應該相同。但知道名稱,密碼,年齡和地址是一個人的所有屬性,將這些值存儲在一個表中是合乎邏輯的...

+0

同意..我有兩種表格中只有一種經常使用的情況.....並且這種連接情況用於少數情況... –

相關問題