Using taxonomy exposed filter in a view ends in MySQL can only use 61 tables in a join
UPDATE

As discussed here, this issue was caused by some missconfiguration at view level and normally should not occur. Read the full post to get the full picture on how you can step on this error.

ORIGINAL ANSWER

I'm adding my findings as answer since comments have limitations both on styles and length, but by all means THIS IS NOT an actual answer to the question.

I've tried to reproduce the describe behavior using an exisitng Drupal site that I'm working on: 


I've a content A with a er field targeting vocabulary B
I've generated over 300 terms with hierarchy
Added 2 nodes tagged with 2 of the generated terms
Created a view as described in the question, but with a slight change: I've one display using "Has term" filter an another display "Has term (with depth)" filter; I explain below why I did this.


The reason using two displays with these two filters is because I saw that "Has taxonomy term" filter (plugin id taxonomy_index_tid) is implemented by \Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid which extends from \Drupal\views\Plugin\views\filter\ManyToOne. Reviewing the code I saw that neither the ManyToOne base filter or the TaxonomyIndexTid implement JOIN queries. On the other hand \Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTidDepth extends from TaxonomyIndexTid and has this on it's ::query() method

public function query() {
  ...
  // Now build the subqueries.
  $subquery = Database::getConnection()-&gt;select('taxonomy_index', 'tn');
  $subquery-&gt;addField('tn', 'nid');
  $where = (new Condition('OR'))-&gt;condition('tn.tid', $this-&gt;value, $operator);
  $last = "tn";

  if ($this-&gt;options['depth'] &gt; 0) {
    $subquery-&gt;leftJoin('taxonomy_term__parent', 'th', "th.entity_id = tn.tid");
    $last = "th";
    foreach (range(1, abs($this-&gt;options['depth'])) as $count) {
      $subquery-&gt;leftJoin('taxonomy_term__parent', "th$count", "$last.parent_target_id = th$count.entity_id");
      $where-&gt;condition("th$count.entity_id", $this-&gt;value, $operator);
      $last = "th$count";
    }
  }
  elseif ($this-&gt;options['depth'] &lt; 0) {
    foreach (range(1, abs($this-&gt;options['depth'])) as $count) {
      $field = $count == 1 ? 'tid' : 'entity_id';
      $subquery-&gt;leftJoin('taxonomy_term__parent', "th$count", "$last.$field = th$count.parent_target_id");
      $where-&gt;condition("th$count.entity_id", $this-&gt;value, $operator);
      $last = "th$count";
    }
  }

  $subquery-&gt;condition($where);
  $this-&gt;query-&gt;addWhere($this-&gt;options['group'], "$this-&gt;tableAlias.$this-&gt;realField", $subquery, 'IN');
}


As shown it does LEFT JOINS to work with the selected depth and hierachy. All though after selecting all 300 terms in both displays I was unable to reproduce the described error (see screenshots below).

Has taxonmy term



Has taxonomy term (with depth)



Also as commented @mpdonadio the filter is using WHERE IN to filter the terms and delegates to LEFT JOIN when dealing with hierarchy.

Maybe these can shed some light on your error.