gpt4 book ai didi

mysql - 优化sql join查询,对比查询效果

转载 作者:行者123 更新时间:2023-11-29 03:49:57 24 4
gpt4 key购买 nike

我是一名学生,正在为我大学的 moodle cms(类(class)管理系统)开发一个模块。我必须为我的模块编写一些连接查询。我无法更改表结构,它们几乎是一成不变的(我没有做,它们是给我的)。

我没有为大型数据库编写查询的经验。我已经创建了我的模块的工作原型(prototype),现在我正在尝试组织代码/优化查询等。

任务:

| id     | task    |--------------------| 1      | task1   || 2      | task3   || 3      | task3   || 4      | task4   | | ...    | ...     |

Assets:

| id     | asset   |--------------------| 1      | task1   || 2      | task3   || 3      | task3   || 4      | task4   || ...    |   ...   |

TaskAsset:

| id     | taskid  | assetid  | coefficient   |-----------------------------------------------| 1      |    2    |     33   | coefficient1  || 2      |    5    |     35   | coefficient2  || 3      |    6    |     36   | coefficient3  || 4      |    8    |     37   | coefficient4  || 5      |   ...   |    ...   |      ...      |
$query = "SELECT TaskAsset.id as id, Assets.asset AS asset, Tasks.task AS task
, coefficient
FROM Tasks, Assets, Taskasset
WHERE Taskasset.taskid= Tasks.id AND TaskAsset.assetid = Assets.id";

$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['id']." - ".$row['asset']." - ".$row['task'] . $row['coefficient'];
echo "<br />";
}

问题:
1.) 那么,如果表结构是这样的,我的查询是否有效?如果是,如果我必须加入更多表,简单联接是否仍然有效?喜欢 4 还是 5?

2.) 我如何评价查询的有效性?在 phpmyadmin 中,我可以看到查询运行所花费的时间。我从来没有为此使用过任何其他东西,因为我的表中的记录很少,所以这无关紧要。

最佳答案

我唯一不同的做法是明确指定连接。

$query = "SELECT ta.id as id, a.asset AS asset, t.task AS task
, coefficient
FROM TaskAsset ta
JOIN Tasks t ON ta.taskId = t.id
JOIN Assets a ON ta.assetId = a.id";

这做同样的事情,但我个人更喜欢它。也就是说,您应该尝试对您的查询运行 EXPLAIN。这就是您会看到压力点的地方。

关于mysql - 优化sql join查询,对比查询效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155275/

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