 
  
   
  
  $arr = ['account.ban', 'account.changePassword', 'account.getActiveOffers'];
$result  = array_unique(array_merge(...array_map(function($el) { return explode('.', $el); }, $arr)));
var_dump($result);
/*
array(4) {
  [0] => string(7) "account"
  [1] => string(3) "ban"
  [3] => string(14) "changePassword"
  [5] => string(15) "getActiveOffers"
}
*/ 
  
   
  
   
  
   
  
  console.log(!1) // false
console.log(!0) // true 
  
   
  
   
  
  тут дело не в покрытии, а в том что идет поиск прямо в индексеЭто и называется "покрывающий индекс". Если размер записи индекса гораздо меньше размера всей строки, то MySQL может использовать индекс даже для неиндексного поиска (например, LIKE '%vasya%'). Ускорение достигается за счёт более плотного расположения данных в индексе, чем в самой таблице, и, соответственно, лучшего использования кэша диска.
 
  
  EXPLAIN SELECT `a`, `b`
  FROM `test`
  WHERE `a` = 1 AND `b` = 1
UNION ALL SELECT `a`, `b`
  FROM `test`
  WHERE `a` = 1 AND `b` <> 1
UNION ALL SELECT `a`, `b`
  FROM `test`
  WHERE `a` <> 1 AND `b` = 1;
| id  | select_type  | table        | partitions | type  | possible_keys | key    | key_len | ref         | rows | filtered | Extra                    |
| --- | ------------ | ------------ | ---------- | ----- | ------------- | ------ | ------- | ----------- | ---- | -------- | ------------------------ |
| 1   | PRIMARY      | test         |            | ref   | key_ab,key_ba | key_ab | 10      | const,const | 1    | 100      | Using index              |
| 2   | UNION        | test         |            | range | key_ab,key_ba | key_ab | 10      |             | 9    | 100      | Using where; Using index |
| 3   | UNION        | test         |            | range | key_ab,key_ba | key_ba | 10      |             | 9    | 100      | Using where; Using index |EXPLAIN SELECT `a`, `b`
  FROM `test`
  WHERE NOT(`a` <> 1 AND `b` <> 1);
| id  | select_type | table | partitions | type  | possible_keys | key    | key_len | ref | rows | filtered | Extra                    |
| --- | ----------- | ----- | ---------- | ----- | ------------- | ------ | ------- | --- | ---- | -------- | ------------------------ |
| 1   | SIMPLE      | test  |            | index | key_ab,key_ba | key_ab | 10      |     | 100  | 55       | Using where; Using index | 
  
  SELECT
  (SELECT COUNT(*) FROM `table1` WHERE ...)
 +(SELECT COUNT(*) FROM `table2` WHERE ...) 
  
  const foo = new Main;
foo.x // 10const foo = new Main;
const buz = new Main;
buz.x = 20;
foo.x // 10
buz.x // 20