Alternative to UNION with indexing
IMHO (and as Paparazzi has pointed out on comments) the easiest way to accomplish it and get better performance is using a single table by adding a CompanyID field.

CREATE TABLE Customers
(
    CompanyID   &lt;some_type&gt; REFERENCES Companies (CompanyID),
    CustomerID  &lt;some_type&gt; REFERENCES Customers (CustomerID),
    Name        text,
    PRIMARY KEY (CompanyID, CustomerID)
);


If you cannot modify your actual table schema, you could use two materialized views, one for each company, and add a clustered index on (company_id, id) or (id, company_id) depending on your queries. 

I've set up a fiddle here

select company_id, id, name
from (
      select company_id, id, name from dbo.vcustA
      union all
      select company_id, id, name from dbo.vcustB
     ) x
where id = 2;


Execution plan for two materialized views using UNION:



But in fact, this is worst than create a new table with all records of both tables. Instead of use two materialized views, I'd suggest to create a new table and, using triggers, add/update/delete all records from customersA and customersB. Or set up a daily job that synchronize this information.