Hi,
My cache has 1 million rows and the sql is as follows.
This sql is taking around 1.836 seconds to execute and this time increases
as I go on adding the data to this cache. Some time it takes more than 4
seconds.

Is there any way to improve the execution time?

*SQL:*
SELECT id, moduleId,ipEnd, ipStart
FROM IpContainerIpV4Data USE INDEX(ip_container_ipv4_idx1)
WHERE subscriptionId = ?  AND moduleId         = ? AND (ipStart        <= ?
AND ipEnd           >= ?)
UNION ALL
SELECT id, moduleId,ipEnd, ipStart
FROM IpContainerIpV4Data USE INDEX(ip_container_ipv4_idx1)
WHERE subscriptionId = ? AND moduleId         = ? AND (ipStart        <= ?
AND ipEnd           >= ?)
UNION ALL
SELECT id, moduleId,ipEnd, ipStart
FROM IpContainerIpV4Data USE INDEX(ip_container_ipv4_idx1)
WHERE subscriptionId = ? AND moduleId         = ? AND (ipStart        >= ?
AND ipEnd           <= ?)

*Indexes are as follows:*

public class IpContainerIpV4Data implements
Data<DefaultDataAffinityKey>, UpdatableData<DefaultDataAffinityKey> {

  @QuerySqlField
  private long id;

  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name =
"ip_container_ipv4_idx1", order = 1)})
  private int moduleId;

  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name =
"ip_container_ipv4_idx1", order = 0),
      @QuerySqlField.Group(name = "ip_container_ipv4_idx2", order = 0)})
  private long subscriptionId;

  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name =
"ip_container_ipv4_idx1", order = 3, descending = true),
      @QuerySqlField.Group(name = "ip_container_ipv4_idx2", order = 2,
descending = true)})
  private long ipEnd;

  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name =
"ip_container_ipv4_idx1", order = 2),
      @QuerySqlField.Group(name = "ip_container_ipv4_idx2", order = 1)})
  private long ipStart;

}


*Execution Plan:*

2018-09-03 19:32:03,098 232176 [pub-#78%springDataNode%] INFO
c.q.a.g.d.IpContainerIpV4DataGridDaoImpl - SELECT
    __Z0.ID AS __C0_0,
    __Z0.MODULEID AS __C0_1,
    __Z0.IPEND AS __C0_2,
    __Z0.IPSTART AS __C0_3
FROM IP_CONTAINER_IPV4_CACHE.IPCONTAINERIPV4DATA __Z0 USE INDEX
(IP_CONTAINER_IPV4_IDX1)
    /* IP_CONTAINER_IPV4_CACHE.IP_CONTAINER_IPV4_IDX1: SUBSCRIPTIONID = ?1
        AND MODULEID = ?2
        AND IPSTART <= ?3
        AND IPEND >= ?4
     */
WHERE ((__Z0.SUBSCRIPTIONID = ?1)
    AND (__Z0.MODULEID = ?2))
    AND ((__Z0.IPSTART <= ?3)
    AND (__Z0.IPEND >= ?4))
2018-09-03 19:32:03,098 232176 [pub-#78%springDataNode%] INFO
c.q.a.g.d.IpContainerIpV4DataGridDaoImpl - SELECT
    __Z1.ID AS __C1_0,
    __Z1.MODULEID AS __C1_1,
    __Z1.IPEND AS __C1_2,
    __Z1.IPSTART AS __C1_3
FROM IP_CONTAINER_IPV4_CACHE.IPCONTAINERIPV4DATA __Z1 USE INDEX
(IP_CONTAINER_IPV4_IDX1)
    /* IP_CONTAINER_IPV4_CACHE.IP_CONTAINER_IPV4_IDX1: SUBSCRIPTIONID = ?5
        AND MODULEID = ?6
        AND IPSTART <= ?7
        AND IPEND >= ?8
     */
WHERE ((__Z1.SUBSCRIPTIONID = ?5)
    AND (__Z1.MODULEID = ?6))
    AND ((__Z1.IPSTART <= ?7)
    AND (__Z1.IPEND >= ?8))
2018-09-03 19:32:03,098 232176 [pub-#78%springDataNode%] INFO
c.q.a.g.d.IpContainerIpV4DataGridDaoImpl - SELECT
    __Z2.ID AS __C2_0,
    __Z2.MODULEID AS __C2_1,
    __Z2.IPEND AS __C2_2,
    __Z2.IPSTART AS __C2_3
FROM IP_CONTAINER_IPV4_CACHE.IPCONTAINERIPV4DATA __Z2 USE INDEX
(IP_CONTAINER_IPV4_IDX1)
    /* IP_CONTAINER_IPV4_CACHE.IP_CONTAINER_IPV4_IDX1: SUBSCRIPTIONID = ?9
        AND MODULEID = ?10
        AND IPSTART >= ?11
        AND IPEND <= ?12
     */
WHERE ((__Z2.SUBSCRIPTIONID = ?9)
    AND (__Z2.MODULEID = ?10))
    AND ((__Z2.IPSTART >= ?11)
    AND (__Z2.IPEND <= ?12))
2018-09-03 19:32:03,098 232176 [pub-#78%springDataNode%] INFO
c.q.a.g.d.IpContainerIpV4DataGridDaoImpl - ((SELECT
    __C0_0 AS ID,
    __C0_1 AS MODULEID,
    __C0_2 AS IPEND,
    __C0_3 AS IPSTART
FROM PUBLIC.__T0
    /* IP_CONTAINER_IPV4_CACHE."merge_scan" */)
UNION ALL
(SELECT
    __C1_0 AS ID,
    __C1_1 AS MODULEID,
    __C1_2 AS IPEND,
    __C1_3 AS IPSTART
FROM PUBLIC.__T1
    /* IP_CONTAINER_IPV4_CACHE."merge_scan" */))
UNION ALL
(SELECT
    __C2_0 AS ID,
    __C2_1 AS MODULEID,
    __C2_2 AS IPEND,
    __C2_3 AS IPSTART
FROM PUBLIC.__T2
    /* IP_CONTAINER_IPV4_CACHE."merge_scan" */)

Reply via email to