Mysql Slow Query Optimization -
i have shopping cart continually logs slow queries one...
# query_time: 4 lock_time: 0 rows_sent: 50 rows_examined: 454403 select sql_calc_found_rows products.*, descr1.product product, min(prices.price) price, group_concat(if(products_categories.link_type = 'm', concat(products_categories.category_id, 'm'), products_categories.category_id)) category_ids, cscart_seo_names.name seo_name cscart_products products left join cscart_product_descriptions descr1 on descr1.product_id = products.product_id , descr1.lang_code = 'en' left join cscart_product_prices prices on prices.product_id = products.product_id , prices.lower_limit = 1 inner join cscart_products_categories products_categories on products_categories.product_id = products.product_id inner join cscart_categories on cscart_categories.category_id = products_categories.category_id , ( cscart_categories.usergroup_ids = '' or find_in_set(0, cscart_categories.usergroup_ids) or find_in_set(1, cscart_categories.usergroup_ids) ) , cscart_categories.status in ( 'a', 'h' ) left join cscart_seo_names on cscart_seo_names.object_id = products.product_id , cscart_seo_names.type = 'p' , cscart_seo_names.dispatch = '' , cscart_seo_names.lang_code = 'en' 1 , products.company_id = 0 , ( products.usergroup_ids = '' or find_in_set(0, products.usergroup_ids) or find_in_set(1, products.usergroup_ids) ) , products.status in ( 'a' ) , prices.usergroup_id in ( 0, 0, 1 ) group products.product_id order descr1.product asc limit 1300, 50;
i can't seem cart company on how speed query up. maybe need add more indexes? not sure , love point me in t right direction solving problem.
thanks,
chris edwards
i see lot of issues query causing slowness...
first of all, anywhere using 'find_in_set', try using in instead. removing 'or' in conditions, indexes can used:
cscart_categories.usergroup_ids = '' or find_in_set(0, cscart_categories.usergroup_ids) or find_in_set(1, cscart_categories.usergroup_ids)
becomes:
cscart_categories.usergroup_ids in ('', '0', '1')
other that, make sure every column being used in join, group clause, clause, or ordering indexed.
another suggestion remove 'group_concat' , select information separately in query.
Comments
Post a Comment