Votre meilleur pari ici est de créer un index FULLTEXT qui englobe les deux champs
Étape 1) Créez un fichier de mots vides avec seulement trois mots
echo "un"> /var/lib/mysql/stopwords.txt
echo "un">> /var/lib/mysql/stopwords.txt
echo "le">> /var/lib/ mysql/stopwords.txt
Étape 2) Ajoutez ces options à /etc/my.cnf
ft_min_word_len=2
ft_stopword_file=/var/lib/mysql/stopwords.txt
Étape 3) Créez un index FULLTEXT sur les colonnes du prénom et du nom
ALTER TABLE utilisateurs ADD FULLTEXT first_last_name_index (first,last);
Étape 4) Implémentez la fonction MATCH dans votre recherche
Quelque chose comme ça :
SELECT * FROM utilisateurs WHERE (MATCH(first,last) AGAINST ('John' IN BOOLEAN MODE)) AND (MATCH(first,last) AGAINST ('Doe' IN BOOLEAN MODE));
Cliquez ici pour en savoir plus sur l'indexation FULLTEXT