MYSQL查询优化 - 加入/联合与表查询

时间:2014-07-09 18:27:13

标签: mysql query-optimization

这是一个概念性问题。在查询优化和速度方面,我想知道哪条路线具有最佳性能并且速度最快。假设我正在使用JFreeChart(这一点有点无关紧要)。将JFreeChart与MYSQL数据库一起使用的整个想法是查询两个值,X和Y.假设数据库中有许多不同的表,通常,X和Y来自两个不同的表。在查询图表时,使用连接和联合来获取这两个值会更快......或者......首先创建一个带有连接/联合值的表,然后在这个新表上运行查询(否需要加入或工会)?这一切都会在一个代码中铭记你。因此,总体而言:连接和联合以获取X和Y值,或者创建一个连接值的临时表,然后使用这些值查询图表。

1 个答案:

答案 0 :(得分:1)

当然,预加入数据并从单个表中选择比执行连接更快。这假设您每行保存一个查找并且首先正确使用索引。

然而,即使你以这种方式从过度归一化中获得性能提升,它也不常见。它不常见的一些原因包括:

  • 冗余数据占用更多空间
  • 对于冗余数据,您必须在发生更改时更新两个副本
  • 加入快速

多行上的JOIN可以改进(它们并不总是需要每行查找),例如MySQL 5.6中新的Batched Key Access连接,但它只对一些查询有帮助,因此你必须告诉MySQL哪个你想要的加入类型。这不是自动的。