For anyone struggling with optimizing search through an EAV table, this post may be able to help.
The way an EAV model is structured doesn’t provide MySQL with the fastest way to search through those tables. Depending on data you are putting in there you could have hundreds of rows all linked to one user. Doing a like on those makes SQL do a like PER row, which drastically affects performance. I found a little trick which can make this process a whole lot faster.
GROUP_CONCAT(`table_data`.`value`) AS `table_data_search`
Doing a group_concat selects all the data and concats it together in 1 big long string which will allow us to only have to do a comparison on 1 field. This increased performance of the query by over 300%