mysql - 使用子查询连接表

标签 mysql

我有一些表: tableA (cola1, cola2, cola3, cola4, cola5) 表 B (colb1, colb2) 表 C (colc1, colc2, colc3) tableA.cola2 引用 tableB.colb1 而 tableA.cola3 指的是 tableC.colc1 我想从所有这些表中检索数据,我有一个使用 join 的查询,如下所示:

Select tableA.cola1, tableA.cola2, tableA.cola3, tableA.cola4, tableA.cola5, tableB.colb2, tableC.colc2, tableC.colc3
FROM tableA
INNER JOIN tableB ON tableA.cola2 = tableB.colb1
INNER JOIN tableC ON tableA.cola3 = tableC.colc1
WHERE tableA.cola5 = 'something'

那么,是否可以使用子查询而不是 JOIN 来编写此查询? 什么会更好?子查询还是 JOIN? 我的一个 friend 告诉我,当你有大表时,JOIN 很慢并且需要一台功能强大的计算机,而子查询速度更快并且不需要功能强大的计算机来执行选择。他说这是因为子查询返回结果是基于加法之类的,而JOIN返回结果是基于乘法之类的(我英语不好,所以我不知道怎么说,但希望你明白)。我是新手,我试过用谷歌搜索,但仍然不明白。有人能抽出时间回答我的问题并向我解释这个子查询与 JOIN 的关系吗?非常感谢。

最佳答案

在大多数情况下,JOIN 比子查询更快,而且子查询更快的情况非常罕见。

JOINs RDBMS 可以创建一个更适合您的查询的执行计划,并且可以预测应该加载哪些数据以进行处理并节省时间,这与子查询不同,子查询将运行所有查询并加载所有数据以进行处理处理。

关于mysql - 使用子查询连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711785/

相关文章:

jquery - Ajax 帖子的成功部分在完整日历代码中不起作用

php - 如何将 IF 语句与 UPDATE 语句结合使用

javascript - 在 Javascript 代码中重复 PHP

php - 插入具有相同唯一 ID 的多行

mysql - SQL SELECT ... INTO 简介 - 为什么它不运行?

Mysql查询内连接两个表并按最后一个ID进行分组

php - 通过 getSingleScalarResult() 和 groupBy() 获取计数查询结果 - 异常

php - Codeigniter 查询总是返回 TRUE

php - 使用 PHP 将数据从 csv 文件导入到 MySQL

mysql - 如何在mysql中执行外连接