2011-12-07 42 views
1

我正在阅读关于在MySQL中加入的文章,但我不明白为什么通过一系列关系连接表具有减少重复表的优点读取。 有人可以用例子来解释吗?谢谢。MySQL:通过一系列关系连接表 - 减少重复表的读取

下面

引用文字:

直观地说,连接表的这两种方式是这样的: 系列关系:表1 - > 2 - > 3 公共关系:表1 - > 2,( 1) - > 3 无论采用哪种方法,MySQL都会读取表1,然后是2,然后是3 - 它的“单次扫描 多连接方法”。公共关系连接中的“(1)”表示当读取表3时的 ,其中的行使用与表 1的关系找到,而不是在关系序列连接中的表2中找到。通过一系列关系的连接表 具有降低的优势复制如果第一个表是最严格的,第二 表限制较少,第三台,甚至限制较少 表读取等

从文本hackmysql.com/case5

回答

0

我相信它只是简单地引用以下两个(不切实际)的例子,虽然我可能是错的。

请注意每个表中3加入的方式。

表1 - > 2 - > 3

 
    SELECT t1.name, t2.phoneNo, t3.address 
    FROM table1 t1 
    JOIN table2 t2 
     ON t2.id = t1.id 
    JOIN table3 t3 
     ON t3.id = t2.id 
    WHERE t1.id = 123 

表1 - > 2,(1) - > 3个

 
    SELECT t1.name, t2.phoneNo, t3.address 
    FROM table1 t1 
    JOIN table2 t2 
     ON t2.id = t1.id 
    JOIN table3 t3 
     ON t3.id = t1.id 
    WHERE t1.id = 123 

问候, 克里斯

+0

呃我理解了这一点,但仍然没有弄清楚为什么有一个减少重复表读取的好处,而且其他没有。 – ercliou

+0

我假设在第一个例子中,table2被读取两次。首先在表1的JOIN上,然后在表3上的JOIN上进行。 –