Couchbase | Как уменьшить время выполнения запроса на выборку, если размер документа составляет 5 МБ.
Проблема: запрос на выделение сильфона занимает 16000 мс. Как сократить время выполнения этого запроса. Но если я использую findById, это займет всего 4000 мс. Из-за первичного ключа.
Примечание: поле результата содержит 5 МБ текстового содержимого. Хэш-код - это столбец вторичного индекса.
Вопрос 1: Если я создаю представление только с кодом id & ha sh, а затем запрашиваю это представление. Это ускорится?
сценарий создания индекса
create index matrix_hashcode on price (_class, hashcode )
where _class = "com.intervest.price.oxygen.model.ClientMatrix"
USING GSI;
код хранилища
public List<ClientMatrix> findByHashcode(int hashcode);//16000 ms
public List<ClientMatrix> findById(int id);//4000 ms
Couchbase Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document
public class ClientMatrix {
@Id
@Field
private Long id;
@Field
private int hashcode;
@Field
private String token;
@Field
private String request;
@Field
private List<com.intervest.price.oxygen.model.ClientMatrixPriceResultGroup> result=new ArrayList<>();
@Field
private LocalDateTime createdDate;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
@JsonPropertyOrder({"supportedValues","results"})
public class ClientMatrixPriceResultGroup {
@Id
private Long resultId;
@Field
private Long requestId;
@Field
@JsonProperty("filtering-criteria")
private SortedMap supportedValues=new TreeMap();
@Field
private List<com.intervest.price.oxygen.model.ClientMatrixPriceResult> results=new ArrayList<>();
public List<com.intervest.price.oxygen.model.ClientMatrixPriceResult> getResults() {
return results;
}