**Describe the situation**

```
SELECT * FROM test.hits INTO OUTFILE 'dump.csv' FORMAT CSV

8873898 rows in set. Elapsed: 32.487 sec. Processed 8.87 million rows, 8.46 GB (273.15 thousand rows/s., 260.42 MB/s.)
```

is bounded by single CPU core. Too slow :(
if (!out_logs_buf)
        {
            if (server_logs_file.empty())
            {
                /// Use stderr by default
                :make_unique<WriteBufferFromFileDescriptor>(STDERR_FILENO
                wb = out_logs_buf.get(
            }
            else if (server_logs_file == "-")
            {
                /// Use stdout if --server_logs_file=- specified
                wb = &std_out;
            }
            else
            {
                out_logs_buf
                    = std::make_unique<WriteBufferFromFile>(server_logs_file, DBMS_DEFAULT_BUFFER_SIZE, O_WRONLY | O_APPEND | O_CREAT
                wb = out_logs_buf.get(
            }
        }
        logs_out_stream = std::make_unique<InternalTextLogs>(*wb, stdout_is_a_tty
    }
}
void ClientBase::processTextAsSingleQuery(const String & full_query)
{
    /// Some parts of a query (result output and formatting) are executed
    /// client-side. Thus we need to parse the query.
    const char * begin = full_query.data(
    auto parsed_query = parseQuery(begin, begin + full_query.size(), false
    if (!parsed_query)