Why does it use temporary? (MySQL)
Step 1: Filter (WHERE) to get just the desired rows.  Producer2 is excellent for that.

Step 2: Now do the GROUP BY.  Well, the rows from Step 1 are not ordered by SectorID (because of the "range" on PeriodStart left things shuffled.  This could be done in one of two ways:  Via some hash in memory, or by sorting (probably in RAM) and doing a simple pass through the data.  It is hard to say which is faster.

You should move away from MyISAM.  This particular query will probably run faster with InnoDB because of the way indexes are handled between the two engines.

Your query is an example of one thing I talk about in my index cookbook -- "an index cannot handle both a range (PeriodStart...) and a GROUP BY.

I am suspicious of "Using index condition".  That is a synonym for "ICP" or "Index Condition Pushdown", wherein the high level handler lets the Engine do some of the index work (more efficiently).  However, I thought that MyISAM was not updated to do any ICP work.  If I am correct, then this is another reason for moving to InnoDB; it does benefit from ICP.

If this is a big table, we can talk about another way to speed up the query (perhaps 10x) -- Summary Tables .