这是一个概念性的问题。在查询优化和速度方面,我想知道哪条路线性能最好,速度最快。假设我正在使用 JFreeChart(这一点有点无关紧要)。将 JFreeChart 与 MYSQL 数据库一起使用的整个想法是查询两个值,一个 X 和一个 Y。假设数据库中充满了许多不同的表,通常,X 和 Y 来自两个不同的表。在查询图表时,使用连接和联合来获取两个值会更快吗……或者……首先创建一个包含连接/联合值的表,然后在这个新表上运行查询(没有需要加入或联合)?请注意,这一切都在一个代码中。因此,总的来说:连接和并集以获得 X 和 Y 值,或者创建一个临时表来连接这些值,然后用这些值查询图表。
最佳答案
当然,预连接数据并从单个表中选择比执行连接更快。这假设您每行保存一次查找并且首先正确使用索引。
但是,即使您以这种方式从反规范化中获得性能改进,也并不常见。它不常见的一些原因包括:
- 冗余数据占用更多空间
- 对于冗余数据,您必须在发生变化时更新两个副本
- JOIN 速度很快
多行上的 JOIN 可以通过 MySQL 5.6 中新的 Batched Key Access join 等改进(它们并不总是需要每行查找),但它只对某些查询有帮助,因此您必须告诉 MySQL 哪个加入你想要的类型。这不是自动的。
关于MYSQL 查询优化 - 连接/联合与表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661210/