The problem with EAV is that each field is independent of the object. I.e. the sample of 10 objects of 10 fields, will make about 100 random seek. Solution:
1. Memory tables — fast random seek, the limited size and the need for synchronization with real data.
2. Sphinx and the like. Alternatively, the stored data in a format more convenient for the facet search.
3. nosql is easier to scale, data are often stored in memory, lack of schema, but with the ability to create indexes on fields.