Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转换为加入_Php_Mysql_Sql_Left Join - Fatal编程技术网

Php 转换为加入

Php 转换为加入,php,mysql,sql,left-join,Php,Mysql,Sql,Left Join,我有一个相当低效的查询,我想我可以使用SQLJOIN来减少它 以下是两个问题: $data = $db->query("SELECT * from tbl_forums_threads WHERE tid = '$id'"); $threaddata = $data->fetch_assoc(); $dataset = $db->query("SELECT * from tbl_forums_posts WHERE tid = '$id'"); $thread = $datas

我有一个相当低效的查询,我想我可以使用SQLJOIN来减少它

以下是两个问题:

$data = $db->query("SELECT * from tbl_forums_threads WHERE tid = '$id'");
$threaddata = $data->fetch_assoc();
$dataset = $db->query("SELECT * from tbl_forums_posts WHERE tid = '$id'");
$thread = $dataset->fetch_assoc();
显然,它们有一个共同点:使用$id

我可以使用SQL连接,甚至左连接吗


谢谢

1带连接的SQL查询不一定比2这样的简单查询快


请继续使用此imo。

1带有连接的SQL查询不一定比2个这样的简单查询快


请继续使用此imo。

通过在每个表的
tid
列上创建索引,您将获得比更改查询更好的改进


简单
在一个表上选择
s,其中包含一个基本where子句,速度不应慢;如果是,可能是因为他们没有使用索引。在这种情况下,您只对一个字段进行筛选,因此这是唯一需要索引的可能性。

通过在每个表的
tid
列上创建索引,您将获得比更改查询更好的改进



简单
在一个表上选择
s,其中包含一个基本where子句,速度不应慢;如果是,可能是因为他们没有使用索引。在这种情况下,您只在一个字段上进行筛选,因此这是唯一需要索引的可能性。

+1在web应用程序中有效使用
SELECT*
,而yuo应该说他没有将PDO用于参数。我不知道这是否具有讽刺意味,但是它实际上使用了所有列中给出的所有信息。我想如果表是相似的,您可以使用
UNION-all
。(不是更快,只是一个查询。)-问题似乎是您正在实现一个公告板,而不是一个真正的论坛,因此为什么分散的表结构?PHP可以在这里抽象出来。这是一个MySQL问题。+1为了在web应用程序中有效地使用
SELECT*
,yuo应该说他没有将PDO用于参数。我不知道这是否是讽刺,但它实际上使用了所有列中给出的所有信息。我怀疑如果表仍然相似,您可以使用
UNION all
。(不是更快,只是一个查询。)-问题似乎是您正在实现一个公告板,而不是一个真正的论坛,因此为什么分散的表结构?PHP可以在这里抽象出来。这是一个MySQL问题。假设索引还不存在,这可能是解决性能问题的最佳解决方案。FWIW,使用MySQL时,可能还值得知道正在使用哪个存储引擎。我还将
限制
结果量,以避免浪费宝贵的ram。@hexa:这是假设他不需要/不需要整个数据集。@Adam当然。我假设这是一个论坛,通常你不希望一个帖子的所有帖子同时出现:P@Shamil-“过早优化是万恶之源”;如果它现在不慢,你有什么理由相信它会变慢,更具体地说,一种不同的方式不会变慢?+1。假设索引还不存在,这可能是解决性能问题的最佳解决方案。FWIW,使用MySQL时,可能还值得知道正在使用哪个存储引擎。我还将
限制
结果量,以避免浪费宝贵的ram。@hexa:这是假设他不需要/不需要整个数据集。@Adam当然。我假设这是一个论坛,通常你不希望一个帖子的所有帖子同时出现:P@Shamil-“过早优化是万恶之源”;如果它现在不慢,你有什么理由相信它会变慢,更具体地说,不同的方式不会变得同样慢?一个带有连接的查询和两个查询(如上所述)是完全不同的事情,所以我认为进行任何形式的比较都不公平。没错,但是,提供一个并不意味着什么的比较比告诉他们这样的比较没有任何意义的价值要低,IMO;)一个带有连接的查询和两个查询(如上所述)是完全不同的事情,因此我认为进行任何形式的比较都是不公平的。没错,但提供一个不意味着任何东西的比较比告诉他们这样的比较没有任何意义要有价值,依我看;)