gpt4 book ai didi

php - 更大、更少或者更小、更多的查询?

转载 作者:行者123 更新时间:2023-11-29 13:55:43 26 4
gpt4 key购买 nike

假设我有两个表,其中一个(我们称之为 person)有一个名为 type 的字段,该字段存储链接到另一个表的整数(我们称之为types 带有一个名为 id 的字段。什么会更能提高性能?

  • 一个更大的查询,存储 type 的所有值,然后循环遍历 person 表并从我们从 types 查询获得的数组中获取值。

  • person的每个循环中从types获取一个值

  • 使用 JOIN 查询将 type 连接到 person 查询。

注意:在示例中,我使用了一些假变量,例如 $db (显然)。只需将它们想象为 CodeIgniter 数据库类或其他东西...

BP #1 的示例代码:

<?php
$types = $this->db->query("SELECT * FROM `types`")->result_array();

$query = $this->db->query("SELECT * FROM `person`");

foreach($query->result_array() as $value)
{
$type = $types[$value['type']];
}

BP #2 的示例代码:(编辑以添加缓存形式)

<?php
$query = $this->db->query("SELECT * FROM person");

$types = [];

foreach($query->result_array() as $value)
{
if(empty($types[$value['type']]))
{
$types[$value['type']] = $this->db->query("SELECT * FROM types WHERE id = {$value['type']} LIMIT 1")->row_array();
}
$type = $types[$value['type']];
}

BP #3 的示例代码:(注意:我根本没有使用过 JOIN,所以请原谅查询中的任何错误,并随时修复它......)

<?php
$query = $this->db->query("SELECT * FROM person JOIN types ON person.type = types.id");

foreach($query->result_array() as $value)
{
// type is already there for us in $value
}

注意:我们预计,persontypes 都将拥有超过 100k+ 行。

最佳答案

连接方法(选项 3)当然应该是最有效的 - 其他两种方法本质上是重新发明数据库最初设计的处理方式,所有相关数据必须发送到网络服务器才可以完成!

关于php - 更大、更少或者更小、更多的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900482/

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