`Selected 13 parts by date, 13 parts by key, 26 marks by primary key .... `

This message is confusing for new users.

I suggest to replace it with

`Selected 13 parts by partition key, 13 parts by primary key, 26 marks by primary key...`
return {};
    if (num_streams > 1)
    {
        
        Pipes res;
        
        if (sum_marks < num_streams * min_marks_for_concurrent_read && parts.size() < num_streams)
            num_streams = std::max((sum_marks + min_marks_for_concurrent_read - 1) / min_marks_for_concurrent_read, parts.size());
        MergeTreeReadPoolPtr pool = std::make_shared<MergeTreeReadPool>(
            num_streams,
            sum_marks,
            min_marks_for_concurrent_read,
            parts,
            data,
            metadata_snapshot,
            query_info.prewhere_info,
            true,
            column_names,
            MergeTreeReadPool::BackoffSettings(settings),
            settings.preferred_block_size_bytes,
            false);
        
        LOG_TRACE(log, "Reading approx. {} rows with {} streams", total_rows, num_streams);
        for (size_t i = 0; i < num_streams; ++i)
        {
            auto source = std::make_shared<MergeTreeThreadSelectBlockInputProcessor>(
                i, pool, min_marks_for_concurrent_read, max_block_size,
                settings.preferred_block_size_bytes, settings.preferred_max_column_in_block_size_bytes,
                data, metadata_snapshot, use_uncompressed_cache,
                query_info.prewhere_info, reader_settings, virt_columns);