У меня медленный запрос, который я пытаюсь ускорить:
@Query("select max(t.timestamp) from TradeDbo t where t.currencyPair.id = :currencyPairId")
Date findMaxTimestamp(@Param("currencyPairId") Long currencyPairId);
Сущность определяется как:
@Entity()
@Table(name = "Trade",
indexes = { @Index(name = "idx_timestamp_currencypairid",
columnList = "timestamp,currency_pair_id")})
public class TradeDbo extends Auditable<String> {
@Id @GeneratedValue
@Getter private Long id;
@Version
private long version;
@JoinColumn(name = "currency_pair_id")
@ManyToOne(fetch=FetchType.EAGER)
@Getter private CurrencyPairDbo currencyPair;
@Column(name = "timestamp")
@Convert(converter = DateConverter.class)
@Getter private Date timestamp;
...
и, как вы можете видеть, я имеюопределил индекс для метки времени / currencypairid (см. , как ускорить запрос max () ), который, как я думал, сделал бы max (метка времени) просто чтением последней страницы btree, но это все ещедо добавления индекса.