EAV is een geldige optie - het kan complex en onhandig zijn met wat in feite ongetypte gegevens worden.
XML met XPath zou ook een optie zijn: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html
Ik denk dat je in de meeste gevallen dynamische SQL moet genereren als de te zoeken velden kunnen variëren.