select max(buy) from price where marketId=309;
Tworzenie indywidualnych indeksów w każdej kolumnie prawdopodobnie nie pozwala MySQL na optymalizację zapytania.
Dla tego zapytania potrzebujesz indeksu złożonego na (marketId, buy)
.
create index idx_price_market_buy ON price (marketId, buy);
Kolejność kolumn w indeksie ma znaczenie:najpierw filtry zapytania na marketId
(więc chcesz, aby ta kolumna była na pierwszej pozycji w indeksie związków), następnie oblicza maksymalny buy
.