php - 1 表查询 vs 连接多表查询性能

标签 php mysql sql performance

我想知道下面哪种方法更快?

假设:

  • 最多 10,000 个产品,每个产品有 1 个用户 ID、1 个猫 ID、3 个额外字段和 5 个图片。
  • 90-99% 的用户访问网站只是为了获取信息,而不是发帖。

方法1:通过不使用“JOIN”的查询获取表中的所有数据:

SELECT * FROM products WHERE ...

表:产品

id | name | poster_name | cat_name | code_1 | code_2 | content |
       dimensions | contact | message | images |

方法2:通过“JOIN”从多个表中获取所有数据:

SELECT ... FROM products
           LEFT JOIN cats ON products.cat_id = casts.id
           LEFT JOIN users ON ....

表格:产品

id | name | code_1 | code_2 | content | cat_id | poster_id |
<小时/>

表:猫

id | cat_name |
<小时/>

表:用户

id | poster_name |
<小时/>

表格:额外

id | product_id | extra_info | extra_data |
<小时/>

表:图像

id | product_id | img_src |

最佳答案

第一种方法通常读取速度更快,第二种方法将帮助您维护数据完整性,并且通常写入速度更快。

从后一种形式到前一种形式的过渡称为denormalization通常用于数据仓库,而操作(“实时”)数据库通常更喜欢后者(第二种方法)。

关于php - 1 表查询 vs 连接多表查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191228/

相关文章:

php - MYSQL:除最高和最低值外的总计值然后相乘

javascript - 即使资源存在,JQuery $.ajax 请求也会返回 "Error 404"

mysql - Hibernate自定义sql查询

sql - SQL中 "IF EXISTS"和 "IF NOT EXISTS"之间的区别?

sql - 两个日期之间的平均差异(按第三个字段分组)?

php - 如何在 PHP 中将 DSA 公钥从 OpenSSL 格式转换为 OpenSSH 格式?

mysql - MySQL 中的多个字段的搜索查询 SQL LIKE 子句

sql - MySQL如何过滤出多个匹配键的记录?

sql - 计算不包括周末和节假日的日期之间的天数的初学者方法

php - 我可以在使用预加载时运行多个 Symfony 应用程序吗?