explain select T0.* , T1.HIDE from TABLE1 as T0 left JOIN ( select key1, key2, count(*) AS HIDE from TABLE1 GROUP BY key1, key2 ) as T1 ON T0.key1 = T1.key1 AND T0.key2 = T1.key2; -- Ignite v2.13.0 and v2.14.0 -- execution time 8 seconds with 2100 records -- execution time 22 seconds with 4400 records SELECT T0.INTERNALID, T0.COLUMN1, T0.COLUMN2, T0.COLUMN3, T0.COLUMN4, T0.COLUMN5, T0.COLUMN6, T0.COLUMN7, T0.COLUMN8, T0.COLUMN9, T0.COLUMN10, T0.KEY1, T0.KEY2, T1.HIDE FROM PUBLIC.TABLE1 T0 /* PUBLIC.TABLE1.__SCAN_ */ LEFT OUTER JOIN ( SELECT KEY1, KEY2, COUNT(*) AS HIDE FROM PUBLIC.TABLE1 GROUP BY KEY1, KEY2 ) T1 /* SELECT KEY1, KEY2, COUNT(*) AS HIDE FROM PUBLIC.TABLE1 /++ PUBLIC.TABLE1.__SCAN_ ++/ WHERE (KEY1 IS ?1) AND (KEY2 IS ?2) GROUP BY KEY1, KEY2: KEY1 = T0.KEY1 AND KEY2 = T0.KEY2 */ ON (T0.KEY1 = T1.KEY1) AND (T0.KEY2 = T1.KEY2) -- Ignite v 2.7.6 -- execution time 3ms with 2100 records -- execution time 4ms seconds with 4400 records SELECT T0__Z0__INTERNALID AS INTERNALID, T0__Z0__COLUMN1 AS COLUMN1, T0__Z0__COLUMN2 AS COLUMN2, T0__Z0__COLUMN3 AS COLUMN3, T0__Z0__COLUMN4 AS COLUMN4, T0__Z0__COLUMN5 AS COLUMN5, T0__Z0__COLUMN6 AS COLUMN6, T0__Z0__COLUMN7 AS COLUMN7, T0__Z0__COLUMN8 AS COLUMN8, T0__Z0__COLUMN9 AS COLUMN9, T0__Z0__COLUMN10 AS COLUMN10, T0__Z0__KEY1 AS KEY1, T0__Z0__KEY2 AS KEY2, T1__Z2.HIDE AS HIDE FROM ( SELECT __C0_0 AS T0__Z0__COLUMN10, __C0_1 AS T0__Z0__COLUMN1, __C0_2 AS T0__Z0__COLUMN2, __C0_3 AS T0__Z0__COLUMN3, __C0_4 AS T0__Z0__COLUMN4, __C0_5 AS T0__Z0__KEY2, __C0_6 AS T0__Z0__COLUMN5, __C0_7 AS T0__Z0__KEY1, __C0_8 AS T0__Z0__COLUMN6, __C0_9 AS T0__Z0__INTERNALID, __C0_10 AS T0__Z0__COLUMN7, __C0_11 AS T0__Z0__COLUMN8, __C0_12 AS T0__Z0__COLUMN9 FROM PUBLIC.__T0 ORDER BY 8, 6 ) __Z3 /* SELECT __C0_0 AS T0__Z0__COLUMN10, __C0_1 AS T0__Z0__COLUMN1, __C0_2 AS T0__Z0__COLUMN2, __C0_3 AS T0__Z0__COLUMN3, __C0_4 AS T0__Z0__COLUMN4, __C0_5 AS T0__Z0__KEY2, __C0_6 AS T0__Z0__COLUMN5, __C0_7 AS T0__Z0__KEY1, __C0_8 AS T0__Z0__COLUMN6, __C0_9 AS T0__Z0__INTERNALID, __C0_10 AS T0__Z0__COLUMN7, __C0_11 AS T0__Z0__COLUMN8, __C0_12 AS T0__Z0__COLUMN9 FROM PUBLIC.__T0 /++ PUBLIC."merge_sorted" ++/ ORDER BY 8, 6 /++ index sorted ++/ */ LEFT OUTER JOIN ( SELECT __C1_0 AS KEY1, __C1_1 AS KEY2, CAST(SUM(__C1_2) AS BIGINT) AS HIDE FROM PUBLIC.__T1 GROUP BY __C1_0, __C1_1 ORDER BY 1, 2 ) T1__Z2 /* SELECT __C1_0 AS KEY1, __C1_1 AS KEY2, CAST(SUM(__C1_2) AS BIGINT) AS HIDE FROM PUBLIC.__T1 /++ PUBLIC."merge_scan": __C1_0 IS ?1 AND __C1_1 IS ?2 ++/ WHERE (__C1_0 IS ?1) AND (__C1_1 IS ?2) GROUP BY __C1_0, __C1_1 ORDER BY 1, 2: KEY1 = T0__Z0__KEY1 AND KEY2 = T0__Z0__KEY2 */ ON (T0__Z0__KEY1 = T1__Z2.KEY1) AND (T0__Z0__KEY2 = T1__Z2.KEY2)