La soluzione migliore qui è creare un indice FULLTEXT che comprenda i due campi
Passaggio 1) Crea un file di parole non significative con solo tre parole
echo "a"> /var/lib/mysql/stopwords.txt
echo "an">> /var/lib/mysql/stopwords.txt
echo "the">> /var/lib/ mysql/stopwords.txt
Passaggio 2) Aggiungi queste opzioni a /etc/my.cnf
ft_min_word_len=2
ft_stopword_file=/var/lib/mysql/stopwords.txt
Passaggio 3) Crea un indice FULLTEXT nelle colonne nome e cognome
ALTER TABLE utenti ADD FULLTEXT first_last_name_index (first, last);
Passaggio 4) Implementa la funzione CONFRONTA nella tua ricerca
Qualcosa del genere:
SELEZIONA * DA utenti DOVE (MATCH(first,last) CONTRO ('John' IN MODALITÀ BOOLEANA)) E (MATCH(first,last) CONTRO ('Doe' IN MODALITÀ BOOLEANA));
Fai clic qui per saperne di più sull'indicizzazione FULLTEXT