Mysql 如何加快此查询的执行(子选择)?

Mysql 如何加快此查询的执行(子选择)?,mysql,performance,Mysql,Performance,这是我的问题,运行速度非常慢。如何提高性能?也许用连接代替sunselects select sfoa.firstname, sfoa.lastname, sfo.increment_id from sales_flat_order_address sfoa join sales_flat_order sfo on sfoa.parent_id = sfo.entity_id where parent_id in ( SELECT order_id FROM ( SELECT

这是我的问题,运行速度非常慢。如何提高性能?也许用连接代替sunselects

select 
sfoa.firstname, 
sfoa.lastname, 
sfo.increment_id 
from sales_flat_order_address sfoa 
join sales_flat_order sfo 
on sfoa.parent_id = sfo.entity_id 
where parent_id 
in 
(
SELECT
order_id
FROM 
(
SELECT
  sfoi.order_id,
  GROUP_CONCAT(sfoi.sku SEPARATOR ', ') AS skus
  FROM sales_flat_order_item sfoi
  GROUP BY sfoi.order_id) t
  WHERE t.skus LIKE '%whatever%'
  AND t.skus RLIKE '[0-9]'
);
谢谢你的帮助

是的,使用子查询时速度较慢。改为使用联接

不管怎样,每次在MySQL中评估子查询时,都会执行它们,而不是所有的RDBMS,也就是说,基本上运行的是700万个查询!如果可能的话,使用联接会将其减少到1。即使添加索引可以提高它们的性能,您仍然可以运行它们


过去这里解释一下这个问题。。。第一步是检查indexe esAlready,请看这里。