Index for split string. PostgreSQL 10
If you will be constantly parsing the data out on the fly, you should probably just stored it parsed in the first place.

If you do want to store it as flat strings there are some things you can do to speed it up.


  where uri like 'A/B/C/D%'


This part can be sped up creating an index 

create index on meta_info (uri text_pattern_ops);


How much of a speed up this is depends on how selective 'A/B/C/D%' is.


  EXPLAIN ANALYZE
      SELECT DISTINCT((regexp_split_to_array(uri, '/'))[1]) as branch
      FROM meta_info


This can be sped up 2 to 3 times if you avoid the unnecessary regexp machinery and the array machinery.

EXPLAIN (ANALYZE, BUFFERS)
SELECT DISTINCT split_part(uri, '/',1) as branch
FROM meta_info;