mysql内连接速度效率

时间:2013-06-18 19:57:32

标签: mysql

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

从理论上讲,如果你从较小的桌子开始,它会加快这个过程吗?

假设我正在比较两个表中的键。表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多个条目)尝试了这一点,并且总是看到不同的结果。我尝试过研究,但找不到明确的答案。如果这个问题太模糊,请道歉。

2 个答案:

答案 0 :(得分:1)

不,组合会是一样的。

4X100 = 100X4(一场比赛并不意味着它的独特之处 - 因此所有人都必须看一下)

即使对a.key和b.key列编制索引,也会使用索引,所需的行仍将减少并以与上述类似的方式相乘。

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

答案 1 :(得分:0)

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

此查询的另一种语法是:

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

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