Hola a todos! Tengo una base de datos con 10.000 registros/productos. Armé las consultas, armé la paginación, el buscador funciona pero al momento de paginar los resultados, cuando quiero pasar a la siguiente página se me cuelga la web completa

, se tilda, se queda pensando y nada... hasta que por ahí, a los minutos pasa a la siguiente.
Les muestro como tengo armada la tabla productos y las consultas para que me digan que me falta o que estoy haciendo mal.
tabla producto
Consultas y Paginación
Código PHP:
ini_set("memory_limit","32M");
include('conectar.php');
// conexion a la base
$conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");
// realizar esta función si se apretó el botón de enviar en el formulario de busqueda
if(isset($_GET['searchart']))
$select1 = $_GET['select1'];
$select2 = $_GET['select2'];
$select3 = $_GET['select3'];
{
$condiciones = "";
if ($select1 != "") $condiciones .= " AND categoria.id_categoria = $select1";
if ($select2 != "" && $condiciones != "") $condiciones .= " AND linea.id_linea = $select2";
if ($select3 != "" && $condiciones != "") $condiciones .= " AND articulo.id_articulo = $select3";
$res = mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones ORDER BY producto.cod_linea");
$numeroRegistros = mysql_num_rows($res);
$tamPag=10;
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}
if ($final>$numPags){
$final=$numPags;
}
}
$res = mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones ORDER BY producto.cod_linea LIMIT ".$limitInf.", 16");
//muestro los resultados...
//Paginacion
if($pagina>1)
{
echo "<a class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&select1=".$select1."&select2=".$select2."&select3=".$select3."'>";
echo "<class='txtPaginador11b'><< ANTERIOR</font>";
echo "</a>*";
}
for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<class='txtPaginador11b'><b>".$i." </b>";
}else{
echo "<a class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&select1=".$select1."&select2=".$select2."&select3=".$select3."'>";
echo "<class='txtPaginador11b'>".$i."</a>*";
}
}
if($pagina<$numPags)
{
echo "*<a class='txtPaginador11b' href='" .$_SERVER["PHP_SELF"]. "?pagina=" .($pagina+1). "&orden=".$orden."&select1=".$select1."&select2=".$select2."&select3=".$select3."'>";
echo "<class='txtPaginador11b'>SIGUIENTE >></a>";
}
echo "<div id='total_paginador'><font face='verdana' size='-2'>Total: ".$numeroRegistros." resultados</div>";
// Cierro la conexion
mysql_close($conexion);
Tengo el mismo estilo de buscador pero preparado para buscar por palabras y le pasa exactamente lo mismo... TARDA UNA ETERNIDAD en pasar de página.
¿Me pueden decir por favor por qué pasa esto?
Desde ya espero puedan darme una mano porque me lo están reclamando y no sé que hacer para solucionarlo.
Muchas gracias y saludos.
Marx.
Les dejo para que vean y lo prueben si es que quieren en la demo de la web que estoy terminando. El código de arriba pertenece a "busqueda con filtros":
http://www.pizzutoautopartes.com.ar/demo/index.php