优化MySQL查询以通过更大的搜索有效执行

时间:2012-12-01 05:25:56

标签: mysql

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

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

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个结果。

我认为应该有一种方法可以使查询不需要查询多个大小的情况。任何提示将不胜感激。谢谢!

0 个答案:

没有答案