如何使用PHP和MySqli优化嵌套查询?
我有一段代码,它从MySQLi中的两个表中获取数据。 它首先必须从表1中获取标题、描述、状态和项目id,然后使用表1中的id从表2中获取名称 有没有更好/更快的方法?我在表中有大约600行,运行这个查询大约需要5秒。我还要补充一点,这个例子有点简化,所以请不要评论db结构如何使用PHP和MySqli优化嵌套查询?,php,mysqli,Php,Mysqli,我有一段代码,它从MySQLi中的两个表中获取数据。 它首先必须从表1中获取标题、描述、状态和项目id,然后使用表1中的id从表2中获取名称 有没有更好/更快的方法?我在表中有大约600行,运行这个查询大约需要5秒。我还要补充一点,这个例子有点简化,所以请不要评论db结构 <?php $results = $connect()->db_connection->query( 'SELECT title, description, status, project_id
<?php
$results = $connect()->db_connection->query(
'SELECT title, description, status, project_id
FROM table
WHERE created_by ='.$user_id
);
if ($results) {
while ($result = $results->fetch_object()) {
$res = $connect()->db_connection->query(
"SELECT name FROM projects WHERE id = ".$result->project_id
);
if ($res) {
while ($r = $res->fetch_object()) {
echo $r->name;
}
}
echo $result->title;
echo $result->status;
}
}
?>
您可以在
项目id
上使用加入
:
$results = $connect()->db_connection->query('SELECT t.title title,t.description,t.status status,t.project_id, p.name name FROM `table` t JOIN projects p ON p.id= t.project_id WHERE t.created_by ='.$user_id);
if($results){
while($result = $results->fetch_object()){
echo $result->name;
echo $result->title;
echo $result->status;
}
}
表在这里有别名-t
用于table
和p
用于项目
此外,为了加快速度,如果您尚未完成,请在表中的项目id
中添加索引:
$connect()->db_connection->query('ALTER TABLE `table` ADD INDEX `product_id`');
尝试在查询中使用JOIN
您可以在此处找到此命令的示例和说明:
还可以查看此信息图表:
您需要使用加入:
Use Query:
SELECT title,description,status,project_id
FROM table tb
inner join projects pr on pr.id = tb.project_id
WHERE created_by = $user_id