哪个更好的单个查询或多个查询?

时间:2010-07-17 05:44:32

标签: php mysql

我有8张桌子。当从所有这8个表中的搜索页面数据触发查询时,将拉出并显示在结果页面上。我想知道的是哪个是这个过程的最佳优化查询方法?

我现在所做的是:

$result = mysql_query("SELECT * FROM TG_dat,TG_dat1,TG_dat2,TG_dat3 WHERE 
TG_dat.web = TG_dat1.web AND TG_dat.web = TG_dat2.web AND TG_dat.web = 
TG_dat3.web AND TG_dat.web='".$uri."'")or die(mysql_error());

还是我需要使用它?

$result = mysql_query("SELECT * FROM TG_dat WHERE web='$uri'")or die(mysql_error());
$result = mysql_query("SELECT * FROM TG_dat1 WHERE web='$uri'")or die(mysql_error());
$result = mysql_query("SELECT * FROM TG_dat2 WHERE web='$uri'")or die(mysql_error());
$result = mysql_query("SELECT * FROM TG_dat3 WHERE web='$uri'")or die(mysql_error());

4 个答案:

答案 0 :(得分:4)

您现有的查询非常完美 - 请尽量使用尽可能少的查询。

答案 1 :(得分:3)

对数据库的较少调用通常更好,因此您可以使用第一个。

但是,不是将所有表直接放入FROM子句中,通常认为在相关表(这些表看起来是这样的表)上使用join是一种好习惯。

例如:

"SELECT *
FROM TG_dat
LEFT JOIN TG_dat2 USING(web)
LEFT JOIN TG_dat3 USING(web)
WHERE TG_dat.web = '$uri'"

答案 2 :(得分:2)

不要太担心你给出的查询中的两个变体 - 它们的执行情况大致相同,但如果性能是问题,那么第一个将是我的选择 - 单个查询涉及单个往返服务器,更容易在客户端上处理结果。最好关注SELECT *SELECT <the fields you need>会更有意义 - 您不需要在结果中多次返回网络字段。

答案 3 :(得分:0)

您现有的查询很好。重点是限制查询数据库服务器以提高效率