Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête de sélection MySQL est terriblement lente

select max(buy) from price where marketId=309;

La création d'index individuels sur chaque colonne ne permet probablement pas à MySQL d'optimiser la requête.

Pour cette requête, vous voulez un index composé sur (marketId, buy) .

create index idx_price_market_buy ON price (marketId, buy);

L'ordre des colonnes dans l'index est important :d'abord les filtres de requête sur marketId (vous voulez donc que cette colonne soit en première position dans l'index composé), puis il calcule le maximum d'buy .