Cuando sus consultas se están saliendo de control, a veces es mejor escribir partes de ellas en SQL y otras partes en el lenguaje de programación de su elección.
Y también podría usar la búsqueda de texto completo para buscar. Puede crear una tabla separada con todos los campos que desea buscar y agregar el 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');