我将查询发送到一个非常大的数据库(意味着许多实体/表)。因此,我有一些疑问,其中包括大约7到8个联接。问题是,我不知道这些表在不久的将来会有多少个条目。每个表可能在1.000到100.000行之间(甚至更多)。
我想把我的查询分割成连续执行两到三个查询,而不是一个超级查询。
在JOIN查询中是否存在公共/推荐的MySQL限制?如何度量/计算哪种类型的拆分是一个很好的变量(取决于表中的行数等等)?
我在同一个表的同一个字段(外键)上有许多JOIN。是否也有优化的方法?(该表中的一行-有许多关系/连接)。
(谢谢;)
更新:
我看得太晚了。有人太好了,改了问题的标题。因为我的英语不好,所以我写了表演赛--意思是有好的表现。我不是有意表演的!请在你的回答中考虑这一点。再次感谢!
发布于 2012-01-08 12:27:57
您可能想了解“解释”,这将向您展示MySQL执行查询的计划。e.g
EXPLAIN SELECT foo FROM bar NATURAL JOIN baz将告诉您MySQL将如何执行查询,从bar自然连接baz中选择foo
从解释结果中,您可能会看到向数据库添加索引的机会,如果查询速度慢,这些索引将有助于查询;在某些情况下,您可能能够向查询添加提示,例如,如果您有经验,告诉MySQL选择一个索引而不是另一个索引。
通常,除非您的“拆分”实际上完全改变了需要执行的内容的语义,否则尝试“拆分”查询将一无所获。例如,如果您的查询从数据库中获取了6个无关的东西,并且将其重写为每一个查询都有6个单独的查询,那么执行所需的总时间可能不会更好(而且可能会更糟)。
发布于 2012-01-08 12:22:17
使用'desc (查询);‘来了解MySQL将如何对待您的查询。通常情况下,让MySQL来完成连接和优化要比自己做要好。这就是它擅长的地方。
这也将告诉您索引在哪里工作或需要增强。
https://stackoverflow.com/questions/8777403
复制相似问题