Hi,
Not sure, what's wrong with your code.
Either IX_T_BD_StatusFid or IX_T_BD_CUSTOMER should have been taken.
I removed JPA related annotations and checked your code, it gave me the
following plan:
[[SELECT
__Z0.FID AS __C0_0,
__Z0.FNUMBER AS __C0_1
FROM "customerCache".CUSTOMERIGNITEINFO __Z0
/* "customerCache".IX_T_BD_STATUSFID: FUSEDSTATUS = 3 */
WHERE __Z0.FUSEDSTATUS = 3], [SELECT
__C0_0 AS FID,
__C0_1 AS FNUMBER
FROM PUBLIC.__T0
/* "customerCache"."merge_scan" */]]
As you can see IX_T_BD_STATUSFID index was used.
I used the following code to check the case. Could you check it on your
side?
public class GroupIndexes1Main {
public static class CustomerIgniteInfo implements Serializable {
private static final long serialVersionUID = -8065741098718964203L;
@QuerySqlField(index = true, orderedGroups={@QuerySqlField.Group(
name = "IX_T_BD_StatusFid", order = 1)})
private String FID;
@QuerySqlField( orderedGroups={@QuerySqlField.Group(
name = "IX_T_BD_StatusFid", order = 2)})
private String FNUMBER;
@QuerySqlField(orderedGroups={@QuerySqlField.Group(
name = "IX_T_BD_CUSTOMER", order = 1),@QuerySqlField.Group(
name = "IX_T_BD_StatusFid", order = 0)})
private Integer FUSEDSTATUS;
public CustomerIgniteInfo() {
}
public CustomerIgniteInfo(String FID, String FNUMBER, Integer
FUSEDSTATUS) {
this.FID = FID;
this.FNUMBER = FNUMBER;
this.FUSEDSTATUS = FUSEDSTATUS;
}
public String getFID() {
return FID;
}
public void setFID(String id) {
this.FID = id;
}
public String getFNUMBER() {
return FNUMBER;
}
public void setFNUMBER(String fNUMBER) {
FNUMBER = fNUMBER;
}
public Integer getFUSEDSTATUS() {
return FUSEDSTATUS;
}
public void setFUSEDSTATUS(Integer fUSEDSTATUS) {
FUSEDSTATUS = fUSEDSTATUS;
}
}
public static void main(String[] args) {
Ignite ignite = Ignition.start();
IgniteCache<Long, CustomerIgniteInfo> cache =
ignite.getOrCreateCache(
new CacheConfiguration<Long,
CustomerIgniteInfo>("customerCache")
.setIndexedTypes(Long.class, CustomerIgniteInfo.class)
);
LongStream.range(0, 10).forEach(l -> {
cache.put(l, new CustomerIgniteInfo("FID" + l, "FNUMBER" + l,
(int)l));
});
List<List<?>> qryResults = cache.query(
new SqlFieldsQuery("EXPLAIN SELECT FID,FNUMBER FROM
\"customerCache\".CustomerIgniteInfo WHERE FUSEDSTATUS = 3")
).getAll();
System.out.println(qryResults);
}
}
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/