【发布时间】:2014-11-26 18:41:11
【问题描述】:
我正在建立一个具有以下布局的数据库:
prodCategory(ID、名称) prodsToCategory (cat_id, prod_id) 产品(ID、名称、描述等) prodsToOptions (prod_id, cat_id) prodOptions(ID、类型、名称)
我正在寻找最有效的 mysql 查询来加入表并仅返回选择了哪些选项的产品。
我目前有:
SELECT
p.ID,
p.name,
p.description,
p.code,
po.name
FROM
Products p
LEFT OUTER JOIN prodsToCategory pc ON p.ID = pc.product_id
LEFT OUTER JOIN prodsToOptions pto ON p.ID = pto.product_id
LEFT OUTER JOIN prodOptions po ON pto.option_id = po.ID
WHERE p.active = '1'
AND pc.category_id = '1'
AND (po.name = 'black' OR po.name = 'blue')
GROUP BY p.ID
网址看起来像这样:
www.test.com/cars?options=black-blue-manual 等(使用 ajax 发布)
上述查询确实有效,但我确信当设置更多选项时会有一种更简洁的方法。
我们非常感谢任何建议,即使数据库架构需要更改。
提前致谢
【问题讨论】:
-
a.) 确保您的表已正确编入索引。 2.) 使用 EXPLAIN 查询来优化您的查询并确保它们正在使用索引。