我有3张桌子。哪个MYSQL选择方法?
月1日 - >产品 2日 - >标签 3日 - > connectionTable
我要选择与自己的标签,所有的产品。我有两种方法。我想问问哪一个更有效。
1 way->使用而
$查询= “SELECT * FROM产品” 两个查询; $ result = mysql_query($ query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$query = "SELECT *
FROM connectionTable
INNER JOIN labels ON labels.labelID = connectionTable.labelID
WHERE productID = " . $row['labelID'];
..
..
}
###################
第二way->使用GROUP_CONCAT()
是这样的:
SELECT GROUP_CONCAT(labelName)
FROM connectionTable
INNER JOIN labels ON labels.labelID = connectionTable.labelID
INNER JOIN products ON products.productID = connectionTable.productID
WHERE productID = " . $row['labelID'] . " GROUP BY productID;
$ result = mysql_query($ query);
我想我在两种方法中都不使用嵌套查询。在第一个中,我有两个串行SQL查询。在第二个我有一个查询,但如果表格很大可能会加入一个比其他更长? – UnforgivenX 2009-10-14 17:09:53
您正在执行第一个每个外部结果的内部sql。除非内部的SQL是炽热的,否则总比执行产生相同结果的JOIN慢。两者都不是最佳的。内部连接效率低下。不知道它如何适用于您的情况,但我会说我需要做的连接中有80%是LEFT JOIN的 – 2009-10-14 18:12:14