使用php查询集或mysql函数更好的方法是什么?
如果表1中有数据,则需要使用这些数据为表1中返回的每一行返回表2中的数据。在PHP中使用一组查询(一个内嵌在另一个的while循环中)或在查询中使用SQL函数更有效的方法是什么 例如:使用php查询集或mysql函数更好的方法是什么?,php,mysql,Php,Mysql,如果表1中有数据,则需要使用这些数据为表1中返回的每一行返回表2中的数据。在PHP中使用一组查询(一个内嵌在另一个的while循环中)或在查询中使用SQL函数更有效的方法是什么 例如: $qry = mysql_query(SELECT date FROM table1) while($res = mysql_fetch_array($qry)) { $qry = mysql_query("SELECT name FROM table2 WHERE date=$res['date']")
$qry = mysql_query(SELECT date FROM table1)
while($res = mysql_fetch_array($qry))
{
$qry = mysql_query("SELECT name FROM table2 WHERE date=$res['date']")
}
或者作为一个函数从查询中的表1返回Id。什么更有效 PHP中的一组查询,一个内嵌在另一个的while循环中 或 查询中的SQL函数 看来你自己回答了你的问题,不是吗 发送到dbms的每个查询都必须通过网络发送、解析、分析,然后执行。您可能希望尽量减少发送到数据库的查询数量 可能存在例外情况,例如,如果数据处理需要dbms无法执行的操作。左/右连接
除非我误解了这个问题…我认为您在寻找sql语法。如果您有两个表:messages和author,并且希望返回带有authors的消息。然后可以编写以下SQL语句:
SELECT m.body, a.name FROM message m
LEFT JOIN author a ON (a.id=m.author_id)
这将返回具有相应作者名称的消息正文
表作者:
id-主键
姓名-作者姓名
表消息:
正文-消息的文本
作者id-作者的id
UPD1:
这将比循环每条消息并选择作者更快。因为使用for循环时,JOIN允许在单个查询中返回所有数据,而不是在nx查询中返回所有数据
UPD2:
对于您的表,查询将如下所示:
SELECT t1.date, t2.name FROM table1 t1 LEFT JOIN table2 t2 ON (t2.date=t1.date)
这取决于数据是在while循环中还是在查询本身中更容易找到 因此,如果DB必须根据主查询中每一行的结果进行子查询,并且主查询中总共有1000行和100个结果,那么它必须检查所有行100次,因此它运行100000个子查询
所以认为它是查询主结果的数量。如果您的while循环必须查询DB 100次,而DB可以在一次查询中更快、更高效地执行此操作,那就更好了。但是如果你想要一个答案的子集,你可以说“仅基于最后一组结果进行查询”,while循环更好。你把我弄丢了。你能重新措辞吗?这是正确的,我不能加入,因为我也在处理数据。执行加入几乎总是比返回数据和对以前返回的每一行执行一个额外的查询更快。+1这个答案对我来说似乎很好。如果您在数据库中创建table2,并且所需的一切都在table1中,并且DBMS能够完成这项工作,那么为什么要使用PHP呢?唯一需要注意的是,您没有提到数据量,因此这听起来有点像可疑的过早优化-如果只有少量行,那么任何一种方法都将具有良好的性能,您需要针对其他方面进行优化-易于开发和可维护性。谢谢,这回答了我的问题。