MYSQL 查询优化 - 连接/联合与表查询

标签 mysql query-optimization

这是一个概念性的问题。在查询优化和速度方面,我想知道哪条路线性能最好,速度最快。假设我正在使用 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/

相关文章:

mysql - 如何在 MySQL 中保存准确的日期时间

mysql - 优化我对两个非常大的表的查询

php - 如何对获取的数据进行超链接?

表本身的 MySQL 性能联接

mysql - 如何在 mysql 查询中用更快的东西替换 distinct?

python - 从excel导入到mysql

mysql - 如何使用 MySQL 连接创建 Do-While 循环以使用回调验证唯一编号

sql - 按 : 分区的 Row_Number() 性能优化

php - 查询检查太多行,如何减少?

php - 在每个查询中写入数据库名称是否真的比在每次页面加载时调用 mysql_select_db() 更快?