Speed up a mysql query with a left join on a subquery and MAX value
===

This is the situation: 2 tables, one contains a list of items, the other a list of bids made on those items. Now I need to know the details of the items with the actual price. In other words, if bids have been made, I need to know the highest value out of the bid list for this item to get the current price. There are situations where there'll be other rules that apply to filter down the amount of items, but basically it comes down to this:

    SELECT i . * , IFNULL( GREATEST( b.`made_bid` , `start_bid` ) , `start_bid` ) AS current_price
    FROM `items` i
    LEFT JOIN (
    
    SELECT `bid_list`.`item_id` , MAX( `made_bid` ) AS made_bid
    FROM `bid_list`
    WHERE (
    
    bid_status =1
    )
    GROUP BY `item_id`
    )b ON b.item_id = i.id

And here is my problem: this works but it's slow and slowing down as more and more items are entered into the database and more and more bids are made and so the bid_list grows.

Is there a better way to write this query or would the best course here be to enter the highest current bid into an extra column of the items table and update it each time a bid is made? Somehow though, that feels wrong as I'd be stocking the same information twice.

Any help with this would greatly be appreciated.

PS, the result of the EXPLAIN:

    id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
    1 	PRIMARY 	i 	ALL 	NULL	NULL	NULL	NULL	839 	
    1 	PRIMARY 	<derived2> 	ALL 	NULL	NULL	NULL	NULL	507 	
    2 	DERIVED 	bid_list 	index 	status 	item_id 	4 	NULL	5726 	Using where