Creating Sort Index takes 96% of query time even without any ORDER BY
Each row in the EXPLAIN's output having NULL in the 'key' column should be investigated. Those row marked as (derivedN) aren't the culprits but rather the victims. In your case flyer_items table need the indexes: (id), (flyer_id), (id, flyer_id) and (flyer_id, id). I can't predict which one of the last two will be choosed by optimizer. 

Then derived tables produced by JOINs will get the suitable inherited indexes for further proceeding.