Hola, vereis tengo una tabla archivos con más de 500.000 registros, utilizo el siguiente código:
Código PHP:
$search_terms = $_GET['q'];
$tags = explode(" ", $search_terms);
$sacar = "SELECT DISTINCT id,titulo,rand,artist FROM archivos WHERE (titulo LIKE '%{$tags[0]}%' OR artist LIKE '%{$tags[0]}%') ";
for ($x = 1; $x < count($tags); $x++) {
$sacar .= "AND (titulo LIKE '%{$tags[$x]}%' OR artist LIKE '%{$tags[$x]}%') ";
}
$sacar .= "LIMIT 10";
echo "Consulta al mysql: ".$sacar."<br><br>";
$ask = mysql_query($sacar);
while ($view = mysql_fetch_assoc($ask)) {
$titulo = $view["titulo"];
$rand = $view["rand"];
$artist = $view["artist"];
echo "<a target=blank href=listen.php?v=".$rand.">".$titulo." (".$artist.")</a>";
echo "<br>";
}
Si por ejemplo escribimos en el buscador: extremoduro ley innata, la consulta, con el código anterior queraría así:
SELECT DISTINCT id,titulo,rand,artist FROM archivos WHERE (titulo LIKE '%extremoduro%' OR artist LIKE '%extremoduro%') AND (titulo LIKE '%ley%' OR artist LIKE '%ley%') AND (titulo LIKE '%innata%' OR artist LIKE '%innata%') LIMIT 10
Pero es muy lento, tengo indices creados en titulo, rand y artista y aun asi, tarda muchisimo, que me sugeris?
Muchas gracias