gpt4 book ai didi

php - 哪个效率更高 : a SQL JOIN or nested PHP loop?

转载 作者:行者123 更新时间:2023-12-04 22:31:47 25 4
gpt4 key购买 nike

我有几个表需要显示数据。

Schools
-------
id | Title

Programs
--------
id | descr | title | type | school.id

当然,这不是最好的设置,但我对数据库结构无能为力。

我需要创建一个列表,按学校、项目和项目类型分隔。现在,我有一个巨大的嵌套循环(伪代码):

Select * from Schools
For Each School
print $school_header;
Select Program Type from Programs WHERE School.id = $school_id
For Each Program type
print $type_header;
Select * from Programs where School.id = $school_id and type = $program_type
For Each Program
print $program_link;

不用说,这是一团糟。

最终结果是一个列表:

  • 计划 1
    • 计划类型 1
      • 计划
      • 计划
    • 计划类型 2
      • 计划
      • 计划
    • 计划类型 3
      • 计划

有没有一种方法可以通过更少的查询和更少的数据库密集型代码来做到这一点?

最佳答案

这里真正的问题不在于一种或另一种编程语言是否更高效。性能上的巨大差异是由于数据局部性造成的,即在数据库本身上执行查询不需要您通过网络来回移动所有数据以进行评估,而 PHP 解决方案则需要。

对于您的查询,您想要做的是编写一个存储过程,它返回多个结果集(用于进一步加入 PHP)或一个大型结果集(通过加入 SQL)。我的猜测是它看起来像:

SELECT S.Title as School_Title, pt.title as Program_type_title, p.title as Program_Title
FROM School S
INNER JOIN ProgramType pt on s.id = pt.school_id
INNER JOIN Program p on pt.id = p.program_type_id
ORDER BY S.Title, pt.title, p.title

这将为您提供大型矩形阵列,按每个标题的优先顺序排列。通过这种方式,您可以遍历行,直到您看到学校标题发生变化、程序类型标题发生变化或其他任何变化,并呈现适当的结束标记。

关于php - 哪个效率更高 : a SQL JOIN or nested PHP loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com