Necesito obtener varios registros de la db para una web de vídeos. Concretamente lo que necesito es:
- Vídeo del último programa TIPO 1.
- Vídeo del último programa TIPO 2.
- Vídeo del último programa TIPO 3.
- Último vídeo subido, que no sea ninguno de los 3 anteriores.
- Penúltimo vídeo subido que no sea ninguno de los 4 anteriores.
Ya lo tengo hecho, pero he probado dos métodos, y lo que me gustaría saber es cual es mejor en el sentido de que "maltrate" menos al servidor MySQL.
El primer método es básicamente hacer 5 búsquedas:
$result = mysql_query("SELECT * FROM videos WHERE tipo = 'tipo1' ORDER BY subido DESC" , $link);
$row = mysql_fetch_array($result);
$ULTtipo1 = $row["indice"];
Y lo mismo con los 2 tipos restantes. Para el último y penúltimo, también lo mismo pero indicando que no sean del tipo1,tipo2 y tipo2. En total 5 querys.
Con el segundo método hago un sólo query, y después examino el array (solo los 100 útimos registros):
while ($row = mysql_fetch_array($result))
{
if ($ULTtipo1 == "" && $row['tipo'] == "tipo1") { $ULTtipo1 = $row["indice"]; }
if ($ULTtipo2 == "" && $row['tipo'] == "tipo2") { $ULTtipo2 = $row["indice"]; }
if ($ULTtipo3 == "" && $row['tipo'] == "tipo3") { $ULTtipo3 = $row["indice"]; }
}
luego muevo el puntero al inicio del array para hacer otra búsqueda del ultimo y penúltimo:
mysql_data_seek($result,0);
while ($row = mysql_fetch_array($result))
{
$ind = $row["indice"];
if ($ULTult == "" && $ind != $ULTtipo1 && $ind != $ULTtipo2 && $ind != $ULTtipo3) { $ULTult = $ind; }
if ($ULTpenul == "" && $ind != $ULTtipo1 && $ind != $ULTtipo2 && $ind != $ULTtipo3 && $ind != $ULTult) { $ULTpenul = $ind; }
}
Ambos métodos funcionan, pero me gustaría saber cual de los dos es mejor, en términos de uso del servidor. 5 querys o 1 query con 2 búsquedas en el array.
Saludos