Quando suas consultas estão ficando fora de controle, às vezes é melhor escrever partes delas em SQL e outras partes em sua linguagem de programação preferida.
E você também pode usar a pesquisa de texto completo para pesquisar. Você pode criar uma tabela separada com todos os campos que deseja pesquisar e adicionar o
FULLTEXT
modificador. CREATE TABLE `search_index` (
`id` INT NOT NULL,
`data` TEXT FULLTEXT,
);
SELECT `id` FROM `search_index` WHERE MATCH(`data`) AGAINST('word1 word2 word3');