-- This takes about 30 seconds, but will make the next query a billion times faster
alter table sales_flat_order_item add index (product_id);

-- This takes about 5 seconds with the index added
select
    cpe.entity_id product_id,
    cpe.sku,
    at_style_number.value style_number,
    cpe.created_at product_created_date,
    sum(sfoi.qty_ordered) total_ordered,
    max(sfoi.created_at) last_order
from catalog_product_entity cpe
left join catalog_product_entity_varchar AS at_style_number
    on at_style_number.entity_id = cpe.entity_id
    and at_style_number.attribute_id = 177
    and at_style_number.store_id = 0
left join sales_flat_order_item sfoi
    on sfoi.product_id = cpe.entity_id
where
    cpe.type_id = 'simple'
group by cpe.entity_id
order by total_ordered desc, last_order desc;

-- These are products that we probably don't need anymore
select
    cpe.entity_id product_id,
    cpe.sku,
    at_style_number.value style_number,
    cpe.created_at product_created_date,
    sum(sfoi.qty_ordered) total_ordered,
    max(sfoi.created_at) last_order
from catalog_product_entity cpe
left join catalog_product_entity_varchar AS at_style_number
    on at_style_number.entity_id = cpe.entity_id
    and at_style_number.attribute_id = 177
    and at_style_number.store_id = 0
left join sales_flat_order_item sfoi
    on sfoi.product_id = cpe.entity_id
where
    cpe.type_id = 'simple'
    -- only unpurchased
    and sfoi.product_id is null
    -- older than 6 months
    and cpe.created_at < now() - interval 6 month
group by cpe.entity_id
order by product_created_date desc;