Of course, small tables are better, reducing IO and easy to expand (for example, when adding fields, there is no need to modify the main table)
As for the join problem you mentioned, it does not exist, because Internet applications generally do not allow join operations. There are two reasons. One is the slow speed, and the other is that you will split the database and tables in the future. What should I do?
What should I do if there is a need to join in business? --In-memory processing
Personally, I think it is more reliable to split it into small tables and join in memory.