Hola, no soy exactamente duro en MySQL y me convencí de eso con solamente ver unos cuantos post en este foro (confieso que no había leído en este sub foro nunca). Así que vine en busca del buen consejo de los que saben.
Estoy haciendo una web de música y me toca trabajar con el buscador, anteriormente tenía una función PHP que me creaba una sentencia con MATCH... AGAINST... y ponía LIKE a las palabras de menos de tres letras, para buscar en el nombre de los artistas y de las canciones. Todo eso lo resolvía en una sola mega función.
Ahora bien, he modificado la tabla para permitir
Featurings (cuando dos cantantes que normalmente no cantan juntos hacen una canción juntos Ej.: Wisin y Yandel FT. Ricardo Montaner) y quería ver como hacía otra super-mega-ultra-consulta que me saque del apuro... pero andando por el foro me encontré con un comentario del cual cito la parte interesante para mí:
Cita:
Iniciado por gnzsoloyo Lo que no se recomienda jamás es hacer un "buscatodo en todo", por más que parezca una buena idea. Hacer 5 queries consecutivas puede ser más eficiente qmue una "superconsulta" que lo busque todo.
Cómo me recomendarían resolver el asunto ahora que la función se haría más compleja al ponerlo a buscar en aun más tablas?
Básicamente, la parte relevante de la estructura de mi base de datos es:
Tabla: artistas
Campos: id, nombre
Tabla: cancion
Campos: id, nombre_cancion, id_del_artista
Tabla: featuring
Campos: id, id_de_la _cancion, id_del artista
------------------
En el ejemplo del Featuring de de Wisin y Yandel con Ricardo Montaner, los datos serían así:
artistas id(1),
nombre(Ricardo Montaner)
id(2),
nombre(Wisin y Yandel)
cancion id(1),
nombre_cancion(Donde está el Amor),
id_del_artista(1)
featuring id(1),
id_de_la _cancion(1),
id_del artista(2)
-------------
Bueno, intenté explicarme lo mejor posible a pesar de no conocer la correcta de plasmar por escrito la estructura de mi base de datos. Espero no se hayan perdido y me puedan ayudar. Recuerden: La duda es ¿Cómo hago un motor de búsqueda lo más eficiente posible?