Let's take for example a dating site with 100.000 users. Each users has about 30 attributes like hair color, smoking, age, city, gender, ...Some attributes are bool, some int and some var or text.
About 20 of those attributes are searchable and half of users don't fill data. All values are displayed on user profile page.
I was thinking about the following options:
- Split data into 4 tables. Table 1 is used for data that is searched mostly, table 2 for attributes that are mostly unfilled, table 3 for large data like about me, and for rest of table 4.
- Separate table for most attributes, so each attribute have own table.
- Using EAV model.
I think that the first option would be the best. Or is there any other better way?