我想知道下面哪种方法更快?
假设:
- 最多 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/