Oui, vous pouvez utiliser un segment de requête non évolutive hideuse le long des lignes de:
where upper(name) like 'MARIA % GARRALON'
ou vous pouvez le faire de la bonne façon :-)
Introduire une autre colonne comme first_and_last_name
et utilisez un déclencheur d'insertion/mise à jour pour le remplir avec la valeur correcte maria garralon
. Ensuite index cette colonne et vos requêtes seront aveuglante rapide:
where first_and_last_name = 'maria garralon'
qui déplace le coût du calcul à l'insertion/mise à jour où il appartient, au lieu de la sélection où les frais sont engagés inutilement. Les données ne changent que lors de l'insertion/mise à jour, c'est donc le seulement fois que vous devriez avoir besoin d'engager ce coût.
Si vos besoins sont plus compliqués qu'un simple nom et prénom, vous pouvez remplir d'autres tables dans vos déclencheurs.
Quand vous faites ce genre de requête, vous pouvez ancrer le début/fin de chaque mot avec des espaces, par exemple 'lower (« « || champ || » ») COMME '% maria%' '. Sinon, vous pouvez trouver des "matches" surprenants comme "Fred Martin" correspondant à "Winifred Martinez". –