表自联接的SQL性能惩罚

时间:2013-01-15 11:01:58

标签: mysql sql

在执行select查询时,表自连接的性能与两个不同表之间的连接相比如何?例如,如果tableA和tableB是完全重复的(结构和数据),那么它是否更可取:

select ... from tableA a inner join tableA b...

select ... from tableA a inner join tableB b...

也许这不是一个简单的答案,在这种情况下,是否有关于这个主题的任何参考?

我正在使用MySql。

谢谢!

1 个答案:

答案 0 :(得分:2)

假设表B是表A的精确副本,并且创建了所有必需的索引,表A的自连接应该比B与A的连接快一点,因为来自表A及其索引的数据可以是从缓存中重用以执行自连接(这也可能隐式地为自连接提供更多内存,并且更多行将适合工作缓冲区)。

如果表B不相同,则无法进行比较。