Foros del Web » Programando para Internet » PHP »

Evitar recorrer una tabla entera.

Estas en el tema de Evitar recorrer una tabla entera. en el foro de PHP en Foros del Web. Hola, imaginar una tabla " ficheros " con 100.000 registros. Y quiero devolver con una consulta todos los registros que en el campo " categoria ...
  #1 (permalink)  
Antiguo 17/11/2007, 16:16
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Evitar recorrer una tabla entera.

Hola,

imaginar una tabla "ficheros" con 100.000 registros. Y quiero devolver con una consulta todos los registros que en el campo "categoria" contengan un "3", por ejemplo.

En vez de recorrer todas las filas de esa tabla... seria mejor tener una tabla a parte, "categoria 3" con las "id" de las filas que fueran de esa categoria?

Es decir, en la tabla "categoria 3" que contenga:

4
35
12
44

Donde 4,35,12 i 44 son los "id's" de las filas pertenecientes a la tabla "ficheros".



Tendria que hacerse así para que el sistema fuera optimo?

Bueno esa es mi consulta, gracias.
  #2 (permalink)  
Antiguo 17/11/2007, 16:19
 
Fecha de Ingreso: noviembre-2007
Mensajes: 157
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Evitar recorrer una tabla entera.

Eso lo sabrás comprobando el tiempo que tarda en realizar esa consulta, pero no creo que sea demasiado grande. Menos que décimas de segundo.
En phpMyAdmin puedes hacer la consulta por ejemplo, y te dirá también el tiempo que ha tardado.
  #3 (permalink)  
Antiguo 17/11/2007, 16:49
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Evitar recorrer una tabla entera.

Hacer un
Código PHP:
mysql_query("SELECT * FROM tabla WHERE categoria=3"); 
no hará que tu servidor se vuelva de la edad de piedra (hablando de velocidad). Si quieres ser más práctico, el crear una tabla extra para cada categoria tampoco te ayuda. Si quieres ser mas óptimo, como ya te dijo Lanselot, no lograrás gran ventaja de una sobre otra, la diferencia son milésimas de segundos.

Con un adecuado método de paginación, no habrá una diferencia real entre las dos formas que mencionas.

Un saludo,
  #4 (permalink)  
Antiguo 17/11/2007, 17:29
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Evitar recorrer una tabla entera.

Vale, no estaba seguro de si con una cantidad grande de registros la variación de tiempo podia ser apreciable..

Muchas gracias por la aclaración :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.