SELECT products.*
FROM products
LEFT JOIN product_category
ON products.id_product = product_category.id_produs
LEFT JOIN categories
ON product_category.id_category = categories.id_category
INNER JOIN options
ON products.id_product = options.id_product
WHERE categories.id_category = '472'
AND product_category.id_category = categories.id_category
LIMIT 0, 20
您好,我正在为一个编程竞赛的电子商务网站工作,我在分类页面上遇到了一些问题,产品将在该页面上列出。
MySQL中有4个表:products、categories、product_category(包含category和products的关系)和options。选项表包含您可以选择购买的产品的各种属性(如重量、高度、颜色)。我需要在分类页面上调用这些,因为有一个产品过滤器,当我选择颜色:红色时,它将显示所有具有属性颜色的产品:红色。
如果我在 products 表中有 10 000 行,并且每个产品有 5 个选项,那么选项表将有 50 000 行,问题是查询会很慢,并且显示产品需要 30 多秒. 我确定问题出在查询上,但我不知道如何做到。为了在 5 秒内获得页面上的产品,我应该在查询中写什么?