【发布时间】:2017-02-01 10:23:04
【问题描述】:
我正在处理 SQL 查询以导出产品所属的产品名称、ID 和相应的类别名称,以及产品平面表中存在的其他一些属性。
在数据库中,表名是:
`catalog_product_flat_1`,
`catalog_category_product` and
`catalog_category_flat_store_1`
我做了这个查询:
select pr.entity_id as product_id
, pr.name as product_name
, catn.name as category_name
from catalog_product_flat_1 as pr
left
join catalog_category_product as cat
on pr.entity_id = cat.product_id
left
join catalog_category_flat_store_1 as catn
on catn.entity_id = cat.category_id
order by pr.entity_id ASC;
现在可以达到目的。但这可以改善吗?我担心速度复杂性的原因是因为这家商店有 440k 产品
我在 stackoverflow 上遇到了另一个解决方案,它使用主表而不是平面表。但是有 4 个左连接。哪个会更快?我完全做错了吗?请不要将此标记为重复。
【问题讨论】:
-
如果您正在寻找代码改进,最好在 Code Review StackExchange 上提出这个问题
-
关于查询性能的问题总是需要,至少,所有相关表的 SHOW CREATE TABLE 语句,以及 EXPLAIN 的结果。顺便说一句,440k 是一个很小的数字,没有 ORDER BY 的 LIMIT 相当没有意义。