Schema
```
ATTACH TABLE default.test (`col1` UUID, `col2` LowCardinality(String)) ENGINE = MergeTree ORDER BY (col1, col2) SETTINGS index_granularity = 128;
```

Data sample: https://www.dropbox.com/s/untu96ad69a2thl/test_data.tar.gz?dl=0

Query:
```
echo "SELECT col1, col2 FROM test PREWHERE col1 = '042fecec-ea68-1b26-00a4-a4f3b3987574'" | clickhouse-benchmark -c 1 -i 2000 -d 0 
```

Results - look on QPS metric:

```
### 20.1.16.120
Loaded 1 queries.

Queries executed: 2000.

localhost:9000, queries 2000, QPS: 597.941, RPS: 76536.485, MiB/s: 1.168, result RPS: 0.000, result MiB/s: 0.000.

0.000%		0.001 sec.	
10.000%		0.001 sec.	
20.000%		0.002 sec.	
30.000%		0.002 sec.	
40.000%		0.002 sec.	
50.000%		0.002 sec.	
60.000%		0.002 sec.	
70.000%		0.002 sec.	
80.000%		0.002 sec.	
90.000%		0.002 sec.	
95.000%		0.002 sec.	
99.000%		0.002 sec.	
99.900%		0.003 sec.	
99.990%		0.015 sec.
### 20.3.2.1

Loaded 1 queries.

Queries executed: 2000.

localhost:9000, queries 2000, QPS: 322.157, RPS: 41236.084, MiB/s: 0.629, result RPS: 0.000, result MiB/s: 0.000.

0.000%		0.001 sec.	
10.000%		0.003 sec.	
20.000%		0.003 sec.	
30.000%		0.003 sec.	
40.000%		0.003 sec.	
50.000%		0.003 sec.	
60.000%		0.003 sec.	
70.000%		0.003 sec.	
80.000%		0.003 sec.	
90.000%		0.003 sec.	
95.000%		0.004 sec.	
99.000%		0.004 sec.	
99.900%		0.016 sec.	
99.990%		0.017 sec.

## 20.6.3.28

Loaded 1 queries.

Queries executed: 2000.

localhost:9000, queries 2000, QPS: 308.133, RPS: 39441.007, MiB/s: 0.602, result RPS: 0.000, result MiB/s: 0.000.

0.000%		0.001 sec.	
10.000%		0.002 sec.	
20.000%		0.003 sec.	
30.000%		0.003 sec.	
40.000%		0.003 sec.	
50.000%		0.003 sec.	
60.000%		0.003 sec.	
70.000%		0.003 sec.	
80.000%		0.004 sec.	
90.000%		0.004 sec.	
95.000%		0.004 sec.	
99.000%		0.004 sec.	
99.900%		0.016 sec.	
99.990%		0.017 sec.
```

Bisecting on releases: 
v20.2.1.2442-testing (21-Feb-2020 18:15) - last good
v20.3.1.2495-testing (26-Feb-2020 18:27) - first bad

ps. experimental_use_processors don't change the situation. 

DiskPtr disk_,
        const String & path_prefix_, const String & data_file_extension_, size_t marks_count_,
        const MarkRanges & all_mark_ranges,
        const MergeTreeReaderSettings & settings,
        MarkCache * mark_cache_,
        UncompressedCache * uncompressed_cache, size_t file_size,
        const MergeTreeIndexGranularityInfo * index_granularity_info_,
        const ReadBufferFromFileBase::ProfileCallback & profile_callback, clockid_t clock_type)
        : disk(std::move(disk_)), path_prefix(path_prefix_), data_file_extension(data_file_extension_), marks_count(marks_count_)
        , mark_cache(mark_cache_), save_marks_in_cache(settings.save_marks_in_cache)
        , index_granularity_info(index_granularity_info_)
        , marks_loader(disk, mark_cache, index_granularity_info->getMarksFilePath(path_prefix),
            marks_count, *index_granularity_info, save_marks_in_cache)
{
    
    size_t max_mark_range_bytes = 0;
    size_t sum_mark_range_bytes = 0;
    for (const auto & mark_range : all_mark_ranges)
    {
        size_t left_mark = mark_range.begin;
        size_t right_mark = mark_range.end;
        
        
        
        if (right_mark < marks_count && marks_loader.getMark(right_mark).offset_in_decompressed_block > 0)