Je ne vois pas de solution miracle que de faire des AND.
Ceci dit, faire des AND est pas mal, puisque dès qu'un élément ne sera pas trouvé, alors il abandonnera les autres tests, ce qui devrait préserver un minimum les performances, surtout si tu es capable de savoir à l'avance si tu as beaucoup de chances de trouver chaque "mot".
Sinon, je te conseille de faire commencer la phrase par "," et finir par ",", et faire LIKE '%,a1,%'
En effet, si ta phrase contient a12, alors un test sur a1 va retourner une ligne, alors que c'est pas forcément ce que tu veux.
Si tu avais eu des "OR" entre les critères et non des "AND", alors tu aurais aussi pu passer par une table temporaire et faire un PHRASE.CHAMP like '%' + MOTS.MOT + '%', ce qui aurait raccourci la requête (une seule clause).