我有一个查询,让用户按尺寸搜索鞋子数据库。他们可以选择多种尺码以及鞋子目前是否有库存。
对于没有返回/选择太多尺寸/产品的较小搜索,查询运行正常。但是,当我同时搜索多个大小时,查询需要更长的时间 - 并且很多时候它会使服务器崩溃。
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个结果。
我认为应该有一种方法可以使查询不需要查询多个大小的情况。任何提示将不胜感激。谢谢!