1

我有一个查询,可以让用户按尺寸搜索鞋子数据库。他们可以选择多种尺码以及鞋子当前是否有货。

对于没有太多尺寸/产品返回/选择的较小搜索,该查询运行正常。但是,当我同时搜索多个尺寸时,查询需要更长的时间——而且很多时候它会导致服务器崩溃。

SELECT DISTINCT `#__{vm}_product`.`product_id`, `product_name`, `products_per_row`,
`category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`,
`product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, 
`product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`,
`product_weight_uom`, `product_length`, `product_width`, `product_height`, 
`product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`,
 `#__{vm} _product`.`cdate`, `#__{vm}_product_attribute`.`attribute_name`, 
`#__{vm}_product_attribute`.`attribute_value`, 
`#__{vm}_product_attribute`.`product_id` 

FROM (`#__{vm}_product`, `#__{vm}_category`, `#__{vm}_product_category_xref`,
`#__{vm}_shopper_group`) 

RIGHT JOIN `#__{vm}_product_attribute` ON `#__{vm}_product`.`product_id` = 
`#__{vm_product_attribute`.`product_id` 
WHERE (`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id` OR
`#__{vm}product_category_xref`.`product_id`=`#__{vm}_product`.`product_parent_id`) AND ((`#__{vm}_product_attribute`.`attribute_name` = 'Size') AND ((`#__{vm}_product_attribute`.`attribute_value` = '5'))) AND `#__{vm}_product_category_xref`.`category_id`=40 AND `product_publish`='Y' 

GROUP BY `#__{vm}_product`.`product_sku` 
ORDER BY CONVERT(`#__{vm}_product_attribute`.`attribute_value`, SIGNED INTEGER) 
LIMIT 0, 999

输出将显示前 24 个结果。

我相信应该有一种方法可以使查询在查询多个大小的情况下花费的时间不那么长。任何提示将不胜感激。谢谢!

4

0 回答 0