我在下面有一个选择查询,它的作用是从 Virtuemart 表中选择与某个属性匹配的所有产品。属性表相当大(将近 6000 行)。有什么方法可以优化下面的查询,或者是否有任何其他可能有用的过程,我已经尝试将索引添加到一个甚至两个表。
SELECT DISTINCT `jos_vm_product`.`product_id`,
`jos_vm_product_attribute`.`attribute_name`,
`jos_vm_product_attribute`.`attribute_value`,
`jos_vm_product_attribute`.`product_id`
FROM (`jos_vm_product`)
RIGHT JOIN `jos_vm_product_attribute`
ON `jos_vm_product`.`product_id` = `jos_vm_product_attribute`.`product_id`
WHERE ((`jos_vm_product_attribute`.`attribute_name` = 'Size')
AND ((`jos_vm_product_attribute`.`attribute_value` = '6.5')
OR (`jos_vm_product_attribute`.`attribute_value` = '10')))
GROUP BY `jos_vm_product`.`product_sku`
ORDER BY CONVERT(`jos_vm_product_attribute`.`attribute_value`, SIGNED INTEGER)
LIMIT 0, 24
这是 EXPLAIN 表的结果:
id select_type table type possible_keys key key_len ref rows Extras 1 SIMPLE jos_vm_product_attribute range idx_product_attribute_name,attribute_value,attribute_name attribute_value 765 NULL 333 使用 where;使用临时的;使用文件排序 1 简单的 jos_vm_product eq_ref PRIMARY PRIMARY 4 shoemark_com_shop.jos_vm_product_attribute.product_id
任何帮助将不胜感激。谢谢。