MySQL 组合(内连接和选择)效率

标签 mysql

我有两个表 A 和 B。 我需要表 A 中的两列(var1 和 var2),并且只需要表 B 中的一列(var3)。 这样做效率更高吗

SELECT var1, var2, var3 FROM TABLE_A a
INNER JOIN TABLE_B b ON (a.var1 = b.var1)

或者

SELECT var1, var2 FROM TABLE_A a
INNER JOIN (SELECT var1, var3 FROM TABLE_B b) b_min ON (a.var1 = b_min.var1)

第二个在连接之前减少了表 B 中的列数,但看起来更“复杂”

最佳答案

我会选择第一个。在第二个中,当您执行子查询时,TABLE_B 上的所有索引都将丢失。

列数对查询效率没有影响。这是的数量。 MySQL 需要扫描的行数会减慢查询速度,而不是列数。

附注确保 TABLE_A.var1TABLE_B.var1 上有索引。

关于MySQL 组合(内连接和选择)效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217656/

相关文章:

mysql - 在 WHERE 子句中使用函数 LOWER() UPDATE IGNORE 不执行任何操作

mysql - WordPress 自定义搜索

MySQL查询删除表A中电子邮件与表B中匹配的记录

mysql - 改进索引以加快慢速查询

mysql - 如何在mysql中将1列分配为4列

php - 使用 php 根据 dropdown1 选择更改 dropdown2 查询

mysql - 使用空值作为 future 数据的占位符是一个好习惯吗?

c# - 尽管有些文本框是空白的,如何将数据更新到mysql? (空白文本框的数据将被保留)

php - 在服务器中搜索图片并显示

php - 三元运算符(内嵌 "if statement")从 MySQL 到 MySQLi 的转换?