### Description

![image](https://github.com/elastic/elasticsearch/assets/76245/d0443170-0419-4759-b505-7620ff3d6594)

The execution time of grouping stats by multiple keywords has increased: 1.2 to 1.6 seconds (with doc_partitioning), 4.3 to 6.7 seconds (with shard_partitioning). The equivalent query with the _search API takes 1.8 seconds.

`from nyc_taxis | ... | stats c = count(dropoff_datetime) by trip_type, payment_type, vendor_id`

This regression occurred since July 2, 2023, and I suspect it may be due to the PR: [Support multivalued fields on arbitrary grouping](https://github.com/elastic/elasticsearch-internal/pull/1340).

/cc @nik9000
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/BatchEncoder.java
case DOUBLE -> new DoublesDecoder();
            case BYTES_REF -> new BytesRefsDecoder();
            case BOOLEAN -> new BooleansDecoder();
            default -> throw new IllegalArgumentException("can't encode " + elementType);
        };
    }
    private static long SHALLOW_SIZE = RamUsageEstimator.shallowSizeOfInstance(BatchEncoder.class);
    /**
     * Buffer into which we encode values.
     */
    protected final BytesRefBuilder bytes = new BytesRefBuilder();
    /**
     * Count of values at each position.
     */
    private int[] counts = new int[ArrayUtil.oversize(10, Integer.BYTES)];
    /**
     * Offsets into the {@link #bytes} for each value.
     */
    private int[] valueOffsets = new int[ArrayUtil.oversize(10, Integer.BYTES)];
    /**
     * The first position in the current batch.
     */
    private int firstPosition;
    /**
     * The number of positions in the current batch. It's also the maximum index into
     * {@link #counts} that has an meaning.
     */
    private int positionCount;
    /**
     * The value being encoded right now.