如何衡量有多少mysql连接带来最佳性能?

时间:2012-01-08 12:13:59

标签: mysql performance join

我正在向一个非常大的数据库(意味着许多实体/表)发送查询。 所以我有一些查询,包括7到8个连接。 问题是,我不知道,这些表在不久的将来会有多少条目。每个表可能在1.000到100.000行之间(甚至更多)。

我考虑将我的查询拆分为连续执行两个或三个查询而不是一个超级查询。

MySQL查询中是否存在JOIN的共同/建议限制? 如何衡量/计算哪种类型的拆分是一个好的变体(取决于表中的行数,等等)?

我在同一个表的同一个字段(外键)上有很多JOIN个。有没有办法优化它? (该表中的一行 - 有很多关系/连接)

谢谢;)

更新

我看得太晚了。有人太好了,改变了问题的标题。 由于我的英语不好,我写了 performant - 意思是表现良好。我不是说要执行! 请在答案中考虑这一点。再次感谢!

2 个答案:

答案 0 :(得分:2)

您可能想了解EXPLAIN,它将向您展示MySQL执行查询的计划。 e.g

 EXPLAIN SELECT foo FROM bar NATURAL JOIN baz

将告诉你MySQL如何执行查询SELECT foo FROM bar NATURAL JOIN baz

从EXPLAIN结果中,您可能会看到向数据库添加索引的机会,如果查询速度很慢,将有助于您的查询,在某些情况下,您可以向查询添加提示,例如:如果你有经验可以告诉MySQL更喜欢一个索引而不是另一个索引。

一般来说,除了“拆分”实际上完全改变了需要执行的语义之外,你不会从试图“拆分”查询中获得任何好处。例如如果你的查询是从数据库中获取六个不相关的东西,并且你将它重新写为六个单独的查询,每个查询取一个东西,那么执行所花费的总时间可能不会更好(并且可能更糟)。

答案 1 :(得分:1)

使用'desc(query);'了解MySQL将如何处理您的查询。通常情况下,让MySQL加入和优化比自己做更好。这就是它的擅长。

这也将告诉您索引在哪里工作或需要增加。