multi-tenant data related to multiple customer? tenant type design on the database schema tables. We have about 20 customers data and single web application is serving it. 

Question, how do we improve query performance or what type of database architecture would you recommend in this situation? 

In ideal world it would be each customer sits on different database user in that way we have separation of data as well as performance. But if we can't then what are the options??
Customers come and go.  Sometimes they have the right to take their data with them.  To extract a subset of data from one schema where the data could be anywhere and the only marker might be a tenant number is a lot harder than putting each customer's data in one schema.

One solution I have seen used is to have a master schema with the metadata concerning the unit of work that is relevant to your application.  So if your application sells something you have tables that list the types of sales, types of sales terms, lists of provinces, states, countries.

Then in each customers schema you have child tables which can extend the parent types with additional columns.  These tables have a primary key which is foreign keyed to the master tables.

If your ORM solution supports inheritance this can work quite well.  Reporting gets a bit tedious as you have additional joins to the master tables.