-2

我正在处理使用内部联接创建查询的逻辑。

从理论上讲,如果您从较小的表开始,它会加快进程吗?

假设我正在比较两个表的键。表 A 只有 4 行。表 B 有 100 个。

也会:

SELECT * FROM `a` INNER JOIN `b` ON `a`.`key` = `b`.`key` WHERE `b`.`key`='value'

跑得比:

SELECT * FROM `b` INNER JOIN `a` ON `b`.`key` = `a`.`key` WHERE `b`.`key`='value'

编辑:我已经尝试过使用更大的数据集(10,000 多个条目)并且总是看到不同的结果。我尝试研究并找不到明确的答案。如果这个问题太模糊,请道歉。

4

2 回答 2

1

不,组合将是相同的。

4X100 = 100X4(一个匹配并不意味着它是唯一的 - 所以必须查看所有内容)

即使 a.key 和 b.key 列被索引,索引也会被使用,所需的行仍然会以与上面类似的方式减少和相乘。

较小的集合(我假设)会有​​更大的差异,因为缓存可能发生在 CPU 上,但是查询优化器应该发现这一点并重写为最佳执行计划。

于 2013-06-18T20:01:42.537 回答
0

INNER JOIN是两个表 + 条件的笛卡尔积。

此查询的另一种语法是:

SELECT * FROM `a`, `b` WHERE `a`.`key` = `b`.`key` AND `b`.`key`='value'

子句中表的顺序FROM无关紧要。所以我相信,这两个查询实际上都是一样的,但是你应该在比 100 行更大的数据样本上检查它来验证这一点。

于 2013-06-18T20:05:40.903 回答