Storing multiple tables by type vs one table
As long as all the data have (roughly) the same attributes, and the only difference is the type, storing them in a single table is fine.
To make your query fast, create an index on type. Then two things can happen:

there are few enough rows of that type that you get an index scan (or bitmap index scan in PostgreSQL)

the type occurs often enough that PostgreSQL opts for a sequential scan


In both cases you won't be much slower than with many small tables.
The final decision might depend on the number of tables (having 10000 tables in a database is not much fun) and the type of query you have:

The following can be a static query with parameters:
SELECT ... FROM mytable WHERE type = 'type1';

while the following requires you to compose an SQL statement for every query:
SELECT ... FROM mytable_type1;


If you want to query several types at once, it is nicer to write
SELECT ... FROM mytable WHERE type IN ('type1', 'type2', 'type3');

than having to write
SELECT ... FROM mytable_type1
UNION ALL
SELECT ... FROM mytable_type2
UNION ALL
SELECT ... FROM mytable_type3;