jonathanc-n commented on PR #17482:
URL: https://github.com/apache/datafusion/pull/17482#issuecomment-3383817937

   @2010YOUY01 I have made quite a bit changes:
   
   ## New Changes
   - Incremental output logic now just uses BatchCoalescer which makes all the 
logic a lot simpler
   - Instead of using take() it can improve performance by using slice()
   - Added RoundRobin Partitioning for right inputs. and left inputs are single 
partitioned
   - Added `remaining_partitions` to synchronize when to actually check 
unmatched indices. Enforces that building unmatched indices only happens once. 
   - Added some additional tests
   
   Current benchmarks use larger table on left side and smaller on right. Swap 
inputs will be supported in a follow up. 
   
   ## Benchmarks
   Benchmarks look very good. To run it yourself you can replace the queries in 
`nlj.rs` with the queries below and make sure to remove the NLJ only 
restriction.
   
   These queries use `<` or `<=`  (causes descending sort) which means these 
benchmarks account for sorting.
   
   ### Full Joins
   Queries
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   r#"
           SELECT *
           FROM range(30000) AS t1
           FULL JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           FULL JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(30000) AS t1
           FULL JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(100000) AS t1
           FULL JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(200000) AS t1
           FULL JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           FULL JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(50000) AS t1
           FULL JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(80000) AS t1
           FULL JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(7000) AS t1
           FULL JOIN range(1000)  AS t2
           ON (t1.value <= t2.value);
       "#,
   
       r#"
           set datafusion.optimizer.allow_piecewise_merge_join=true
       "#,
   
       r#"
           SELECT *
           FROM range(30000) AS t1
          FULL  JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(30000) AS t1
           FULL JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(30000) AS t1
           FULL JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(100000) AS t1
           FULL JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(200000) AS t1
           FULL JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           FULL JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(50000) AS t1
           FULL JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(80000) AS t1
           FULL JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(7000) AS t1
           FULL JOIN range(1000)  AS t2
           ON (t1.value <= t2.value);
       "#,
   
   ```
   
   </details>
   
   Results
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   Query 1 iteration 0 returned 34852 rows in 16.05125ms
   Query 1 iteration 1 returned 34852 rows in 11.752291ms
   Query 1 iteration 2 returned 34852 rows in 9.914917ms
   Query 2 iteration 0 returned 529500 rows in 16.1965ms
   Query 2 iteration 1 returned 529500 rows in 15.085ms
   Query 2 iteration 2 returned 529500 rows in 14.240292ms
   Query 3 iteration 0 returned 32018002 rows in 120.564584ms
   Query 3 iteration 1 returned 32018002 rows in 120.938292ms
   Query 3 iteration 2 returned 32018002 rows in 123.329541ms
   Query 4 iteration 0 returned 598502 rows in 43.972708ms
   Query 4 iteration 1 returned 598502 rows in 44.160041ms
   Query 4 iteration 2 returned 598502 rows in 44.264125ms
   Query 5 iteration 0 returned 32196000 rows in 495.291458ms
   Query 5 iteration 1 returned 32196000 rows in 509.875792ms
   Query 5 iteration 2 returned 32196000 rows in 508.242708ms
   Query 6 iteration 0 returned 2497002 rows in 317.830542ms
   Query 6 iteration 1 returned 2497002 rows in 324.181541ms
   Query 6 iteration 2 returned 2497002 rows in 319.515667ms
   Query 7 iteration 0 returned 12542502 rows in 99.123666ms
   Query 7 iteration 1 returned 12542502 rows in 98.18625ms
   Query 7 iteration 2 returned 12542502 rows in 98.21575ms
   Query 8 iteration 0 returned 24576500 rows in 206.997417ms
   Query 8 iteration 1 returned 24576500 rows in 205.0475ms
   Query 8 iteration 2 returned 24576500 rows in 201.080625ms
   Query 9 iteration 0 returned 506500 rows in 4.351875ms
   Query 9 iteration 1 returned 506500 rows in 4.322667ms
   Query 9 iteration 2 returned 506500 rows in 4.290833ms
   using pwmj for 10
   Query 10 iteration 0 returned 0 rows in 25.458µs
   Query 10 iteration 1 returned 0 rows in 21.958µs
   Query 10 iteration 2 returned 0 rows in 21.334µs
   using pwmj for 11
   Query 11 iteration 0 returned 34852 rows in 850.875µs
   Query 11 iteration 1 returned 34852 rows in 616.75µs
   Query 11 iteration 2 returned 34852 rows in 613.292µs
   using pwmj for 12
   Query 12 iteration 0 returned 529500 rows in 1.581291ms
   Query 12 iteration 1 returned 529500 rows in 1.555667ms
   Query 12 iteration 2 returned 529500 rows in 1.574417ms
   using pwmj for 13
   Query 13 iteration 0 returned 32018002 rows in 50.687208ms
   Query 13 iteration 1 returned 32018002 rows in 51.185ms
   Query 13 iteration 2 returned 32018002 rows in 52.096125ms
   using pwmj for 14
   Query 14 iteration 0 returned 598502 rows in 3.986583ms
   Query 14 iteration 1 returned 598502 rows in 4.21625ms
   Query 14 iteration 2 returned 598502 rows in 3.984708ms
   using pwmj for 15
   Query 15 iteration 0 returned 32196000 rows in 56.680583ms
   Query 15 iteration 1 returned 32196000 rows in 56.67925ms
   Query 15 iteration 2 returned 32196000 rows in 57.5255ms
   using pwmj for 16
   Query 16 iteration 0 returned 2497002 rows in 20.027667ms
   Query 16 iteration 1 returned 2497002 rows in 19.987083ms
   Query 16 iteration 2 returned 2497002 rows in 20.5755ms
   using pwmj for 17
   Query 17 iteration 0 returned 12542502 rows in 21.576958ms
   Query 17 iteration 1 returned 12542502 rows in 21.268875ms
   Query 17 iteration 2 returned 12542502 rows in 21.101625ms
   using pwmj for 18
   Query 18 iteration 0 returned 24576500 rows in 41.632166ms
   Query 18 iteration 1 returned 24576500 rows in 42.199417ms
   Query 18 iteration 2 returned 24576500 rows in 41.981208ms
   using pwmj for 19
   Query 19 iteration 0 returned 506500 rows in 1.459417ms
   Query 19 iteration 1 returned 506500 rows in 1.31825ms
   Query 19 iteration 2 returned 506500 rows in 1.320333ms
   
   ```
   
   </details>
   
   ### Left Joins
   Queries
   
   <details>
     <summary>Click to expand</summary>
     
   ```
   
   r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(100000) AS t1
           LEFT JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(200000) AS t1
           LEFT JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           LEFT JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(50000) AS t1
           LEFT JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
   
       r#"
           SELECT *
           FROM range(80000) AS t1
           LEFT JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           set datafusion.optimizer.allow_piecewise_merge_join=true
       "#,
   
       r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           LEFT JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(100000) AS t1
           LEFT JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(200000) AS t1
           LEFT JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           LEFT JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(50000) AS t1
           LEFT JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(80000) AS t1
           LEFT JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
       
   ```
   
   </details>
   
   
   Results:
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   Query 1 iteration 0 returned 34851 rows in 13.563958ms
   Query 1 iteration 1 returned 34851 rows in 10.809917ms
   Query 1 iteration 2 returned 34851 rows in 9.401708ms
   Query 2 iteration 0 returned 529500 rows in 16.359917ms
   Query 2 iteration 1 returned 529500 rows in 14.207666ms
   Query 2 iteration 2 returned 529500 rows in 13.391625ms
   Query 3 iteration 0 returned 32018001 rows in 119.216542ms
   Query 3 iteration 1 returned 32018001 rows in 124.351333ms
   Query 3 iteration 2 returned 32018001 rows in 125.460291ms
   Query 4 iteration 0 returned 598501 rows in 43.042167ms
   Query 4 iteration 1 returned 598501 rows in 41.469958ms
   Query 4 iteration 2 returned 598501 rows in 42.400917ms
   Query 5 iteration 0 returned 32196000 rows in 484.91175ms
   Query 5 iteration 1 returned 32196000 rows in 501.124291ms
   Query 5 iteration 2 returned 32196000 rows in 483.698208ms
   Query 6 iteration 0 returned 2497001 rows in 314.219708ms
   Query 6 iteration 1 returned 2497001 rows in 312.403458ms
   Query 6 iteration 2 returned 2497001 rows in 316.319542ms
   Query 7 iteration 0 returned 12542501 rows in 97.666ms
   Query 7 iteration 1 returned 12542501 rows in 99.839541ms
   Query 7 iteration 2 returned 12542501 rows in 97.520875ms
   Query 8 iteration 0 returned 24576500 rows in 205.489833ms
   Query 8 iteration 1 returned 24576500 rows in 199.618292ms
   Query 8 iteration 2 returned 24576500 rows in 205.075834ms
   using pwmj for 9
   Query 9 iteration 0 returned 0 rows in 25.583µs
   Query 9 iteration 1 returned 0 rows in 22.25µs
   Query 9 iteration 2 returned 0 rows in 20.459µs
   using pwmj for 10
   Query 10 iteration 0 returned 34851 rows in 889.5µs
   Query 10 iteration 1 returned 34851 rows in 644.875µs
   Query 10 iteration 2 returned 34851 rows in 674.542µs
   using pwmj for 11
   Query 11 iteration 0 returned 529500 rows in 1.657375ms
   Query 11 iteration 1 returned 529500 rows in 1.7705ms
   Query 11 iteration 2 returned 529500 rows in 1.71175ms
   using pwmj for 12
   Query 12 iteration 0 returned 32018001 rows in 56.604542ms
   Query 12 iteration 1 returned 32018001 rows in 54.31675ms
   Query 12 iteration 2 returned 32018001 rows in 58.129333ms
   using pwmj for 13
   Query 13 iteration 0 returned 598501 rows in 4.146833ms
   Query 13 iteration 1 returned 598501 rows in 4.068125ms
   Query 13 iteration 2 returned 598501 rows in 4.014459ms
   using pwmj for 14
   Query 14 iteration 0 returned 32196000 rows in 62.61375ms
   Query 14 iteration 1 returned 32196000 rows in 63.86275ms
   Query 14 iteration 2 returned 32196000 rows in 63.588916ms
   using pwmj for 15
   Query 15 iteration 0 returned 2497001 rows in 20.669417ms
   Query 15 iteration 1 returned 2497001 rows in 20.772416ms
   Query 15 iteration 2 returned 2497001 rows in 20.07075ms
   using pwmj for 16
   Query 16 iteration 0 returned 12542501 rows in 23.259375ms
   Query 16 iteration 1 returned 12542501 rows in 22.053ms
   Query 16 iteration 2 returned 12542501 rows in 23.912958ms
   using pwmj for 17
   Query 17 iteration 0 returned 24576500 rows in 46.321708ms
   Query 17 iteration 1 returned 24576500 rows in 44.81025ms
   Query 17 iteration 2 returned 24576500 rows in 47.482666ms
   
   ```
   
   </details>
   
   ### Right Joins
   Queries
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(100000) AS t1
           RIGHT JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(200000) AS t1
           RIGHT JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           RIGHT JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(50000) AS t1
           RIGHT JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(80000) AS t1
           RIGHT JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           set datafusion.optimizer.allow_piecewise_merge_join=true
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(100)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(1000) AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(30000) AS t1
           RIGHT JOIN range(8000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(100000) AS t1
           RIGHT JOIN range(1000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(200000) AS t1
           RIGHT JOIN range(8000)   AS t2
           ON (t1.value <= t2.value);
       "#,
       r#"
           SELECT *
           FROM range(500000) AS t1
           RIGHT JOIN range(2000)   AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(50000) AS t1
           RIGHT JOIN range(5000)  AS t2
           ON (t1.value < t2.value);
       "#,
       r#"
           SELECT *
           FROM range(80000) AS t1
           RIGHT JOIN range(7000)  AS t2
           ON (t1.value <= t2.value);
       "#,
   
   ```
   
   </details>
   
   Results
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   Query 1 iteration 0 returned 4951 rows in 15.904458ms
   Query 1 iteration 1 returned 4951 rows in 11.353667ms
   Query 1 iteration 2 returned 4951 rows in 10.1235ms
   Query 2 iteration 0 returned 500500 rows in 16.099917ms
   Query 2 iteration 1 returned 500500 rows in 14.73375ms
   Query 2 iteration 2 returned 500500 rows in 14.110875ms
   Query 3 iteration 0 returned 31996001 rows in 123.070583ms
   Query 3 iteration 1 returned 31996001 rows in 125.751833ms
   Query 3 iteration 2 returned 31996001 rows in 122.032792ms
   Query 4 iteration 0 returned 499501 rows in 45.082459ms
   Query 4 iteration 1 returned 499501 rows in 44.246958ms
   Query 4 iteration 2 returned 499501 rows in 44.218292ms
   Query 5 iteration 0 returned 32004000 rows in 494.880083ms
   Query 5 iteration 1 returned 32004000 rows in 497.626709ms
   Query 5 iteration 2 returned 32004000 rows in 491.031125ms
   Query 6 iteration 0 returned 1999001 rows in 319.75ms
   Query 6 iteration 1 returned 1999001 rows in 327.817708ms
   Query 6 iteration 2 returned 1999001 rows in 320.286208ms
   Query 7 iteration 0 returned 12497501 rows in 100.778041ms
   Query 7 iteration 1 returned 12497501 rows in 98.214708ms
   Query 7 iteration 2 returned 12497501 rows in 98.079084ms
   Query 8 iteration 0 returned 24503500 rows in 203.049042ms
   Query 8 iteration 1 returned 24503500 rows in 204.667958ms
   Query 8 iteration 2 returned 24503500 rows in 206.985375ms
   using pwmj for 9
   Query 9 iteration 0 returned 0 rows in 26.625µs
   Query 9 iteration 1 returned 0 rows in 22.875µs
   Query 9 iteration 2 returned 0 rows in 20.208µs
   using pwmj for 10
   Query 10 iteration 0 returned 4951 rows in 708µs
   Query 10 iteration 1 returned 4951 rows in 554.792µs
   Query 10 iteration 2 returned 4951 rows in 557.792µs
   using pwmj for 11
   Query 11 iteration 0 returned 500500 rows in 1.338708ms
   Query 11 iteration 1 returned 500500 rows in 1.315292ms
   Query 11 iteration 2 returned 500500 rows in 1.318208ms
   using pwmj for 12
   Query 12 iteration 0 returned 31996001 rows in 36.270542ms
   Query 12 iteration 1 returned 31996001 rows in 35.548916ms
   Query 12 iteration 2 returned 31996001 rows in 37.627291ms
   using pwmj for 13
   Query 13 iteration 0 returned 499501 rows in 3.288875ms
   Query 13 iteration 1 returned 499501 rows in 3.284625ms
   Query 13 iteration 2 returned 499501 rows in 3.224916ms
   using pwmj for 14
   Query 14 iteration 0 returned 32004000 rows in 42.140333ms
   Query 14 iteration 1 returned 32004000 rows in 41.813167ms
   Query 14 iteration 2 returned 32004000 rows in 41.961667ms
   using pwmj for 15
   Query 15 iteration 0 returned 1999001 rows in 16.863042ms
   Query 15 iteration 1 returned 1999001 rows in 17.2575ms
   Query 15 iteration 2 returned 1999001 rows in 16.82575ms
   using pwmj for 16
   Query 16 iteration 0 returned 12497501 rows in 16.231792ms
   Query 16 iteration 1 returned 12497501 rows in 15.059792ms
   Query 16 iteration 2 returned 12497501 rows in 15.160083ms
   using pwmj for 17
   Query 17 iteration 0 returned 24503500 rows in 30.725667ms
   Query 17 iteration 1 returned 24503500 rows in 30.282084ms
   Query 17 iteration 2 returned 24503500 rows in 30.001167ms
   
   ```
   
   </details>
   
   
   ### Inner Joins
   Queries
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(100)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(1000) AS t2
       ON (t1.value <= t2.value);
   "#,
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(8000)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(100000) AS t1
       INNER JOIN range(1000)   AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(200000) AS t1
       INNER JOIN range(8000)   AS t2
       ON (t1.value <= t2.value);
   "#,
   r#"
       SELECT *
       FROM range(500000) AS t1
       INNER JOIN range(2000)   AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(50000) AS t1
       INNER JOIN range(5000)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(80000) AS t1
       INNER JOIN range(7000)  AS t2
       ON (t1.value <= t2.value);
   "#,
   r#"
       set datafusion.optimizer.allow_piecewise_merge_join=true
   "#,
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(100)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(1000) AS t2
       ON (t1.value <= t2.value);
   "#,
   r#"
       SELECT *
       FROM range(30000) AS t1
       INNER JOIN range(8000)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(100000) AS t1
       INNER JOIN range(1000)   AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(200000) AS t1
       INNER JOIN range(8000)   AS t2
       ON (t1.value <= t2.value);
   "#,
   r#"
       SELECT *
       FROM range(500000) AS t1
       INNER JOIN range(2000)   AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(50000) AS t1
       INNER JOIN range(5000)  AS t2
       ON (t1.value < t2.value);
   "#,
   r#"
       SELECT *
       FROM range(80000) AS t1
       INNER JOIN range(7000)  AS t2
       ON (t1.value <= t2.value);
   "#,
   
   ```
   
   </details>
   
   Results
   
   <details>
     <summary>Click to expand</summary>
   
   ```
   
   Query 1 iteration 0 returned 4950 rows in 13.815208ms
   Query 1 iteration 1 returned 4950 rows in 10.542709ms
   Query 1 iteration 2 returned 4950 rows in 9.745042ms
   Query 2 iteration 0 returned 500500 rows in 15.482083ms
   Query 2 iteration 1 returned 500500 rows in 14.565542ms
   Query 2 iteration 2 returned 500500 rows in 13.728666ms
   Query 3 iteration 0 returned 31996000 rows in 126.463708ms
   Query 3 iteration 1 returned 31996000 rows in 121.749166ms
   Query 3 iteration 2 returned 31996000 rows in 120.915709ms
   Query 4 iteration 0 returned 499500 rows in 42.01275ms
   Query 4 iteration 1 returned 499500 rows in 42.730833ms
   Query 4 iteration 2 returned 499500 rows in 101.3445ms
   Query 5 iteration 0 returned 32004000 rows in 511.74725ms
   Query 5 iteration 1 returned 32004000 rows in 510.05675ms
   Query 5 iteration 2 returned 32004000 rows in 498.320875ms
   Query 6 iteration 0 returned 1999000 rows in 315.585917ms
   Query 6 iteration 1 returned 1999000 rows in 314.887791ms
   Query 6 iteration 2 returned 1999000 rows in 313.276792ms
   Query 7 iteration 0 returned 12497500 rows in 98.969ms
   Query 7 iteration 1 returned 12497500 rows in 100.670583ms
   Query 7 iteration 2 returned 12497500 rows in 98.817625ms
   Query 8 iteration 0 returned 24503500 rows in 220.258166ms
   Query 8 iteration 1 returned 24503500 rows in 205.282709ms
   Query 8 iteration 2 returned 24503500 rows in 204.11275ms
   using pwmj for 9
   Query 9 iteration 0 returned 0 rows in 27.667µs
   Query 9 iteration 1 returned 0 rows in 22.75µs
   Query 9 iteration 2 returned 0 rows in 21.375µs
   using pwmj for 10
   Query 10 iteration 0 returned 4950 rows in 721.041µs
   Query 10 iteration 1 returned 4950 rows in 533.333µs
   Query 10 iteration 2 returned 4950 rows in 596.5µs
   using pwmj for 11
   Query 11 iteration 0 returned 500500 rows in 1.363375ms
   Query 11 iteration 1 returned 500500 rows in 1.469292ms
   Query 11 iteration 2 returned 500500 rows in 1.374417ms
   using pwmj for 12
   Query 12 iteration 0 returned 31996000 rows in 36.737875ms
   Query 12 iteration 1 returned 31996000 rows in 37.10075ms
   Query 12 iteration 2 returned 31996000 rows in 37.435667ms
   using pwmj for 13
   Query 13 iteration 0 returned 499500 rows in 3.59ms
   Query 13 iteration 1 returned 499500 rows in 3.438667ms
   Query 13 iteration 2 returned 499500 rows in 3.273291ms
   using pwmj for 14
   Query 14 iteration 0 returned 32004000 rows in 42.230333ms
   Query 14 iteration 1 returned 32004000 rows in 42.319541ms
   Query 14 iteration 2 returned 32004000 rows in 42.030083ms
   using pwmj for 15
   Query 15 iteration 0 returned 1999000 rows in 17.155917ms
   Query 15 iteration 1 returned 1999000 rows in 17.361208ms
   Query 15 iteration 2 returned 1999000 rows in 17.18875ms
   using pwmj for 16
   Query 16 iteration 0 returned 12497500 rows in 16.114084ms
   Query 16 iteration 1 returned 12497500 rows in 16.151625ms
   Query 16 iteration 2 returned 12497500 rows in 15.919125ms
   using pwmj for 17
   Query 17 iteration 0 returned 24503500 rows in 30.728791ms
   Query 17 iteration 1 returned 24503500 rows in 30.893458ms
   Query 17 iteration 2 returned 24503500 rows in 30.559375ms
   
   ```
   
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to