我是一名学生正在为我的学院的moodle cms(课程管理系统)工作.我必须为我的模块编写一些连接查询.我不能对表结构进行更改,它们几乎是一成不变的(我没有制作它们,它们是给我的).
我没有为大型数据库编写查询的经验.我已经创建了我的模块的工作原型,现在我正在尝试组织代码/优化查询等.
任务:
| id | task | -------------------- | 1 | task1 | | 2 | task3 | | 3 | task3 | | 4 | task4 | | ... | ... |
资产:
| 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 />";
}
Run Code Online (Sandbox Code Playgroud)
问题:
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";
Run Code Online (Sandbox Code Playgroud)
这也是一样的,但我个人更喜欢它.也就是说,您应该尝试EXPLAIN在查询上运行.那是你会看到压力点的地方.
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |