`SELECT ... WHERE match(key, '^prefix...')`
should use index similarly to
`SELECT ... WHERE key LIKE 'prefix%'`
const PreparedSetsPtr & sets,
        const std::vector<MergeTreeSetIndex::KeyTuplePositionMapping> & indexes_mapping,
        const DataTypes & data_types) const
    {
        if (sets && ast)
        {
            if (ast->as<ASTSubquery>() || ast->as<ASTTableIdentifier>())
                return sets->get(PreparedSetKey::forSubquery(*ast));
            
            
            
            
            auto types_match = [&indexes_mapping, &data_types](const SetPtr & candidate_set)
            {
                assert(indexes_mapping.size() == data_types.size());
                for (size_t i = 0; i < indexes_mapping.size(); ++i)
                {
                    if (!candidate_set->areTypesEqual(indexes_mapping[i].tuple_index, data_types[i]))