Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como es mas rapido y eficiente llenar tablas temporales con procedimientos...

Estas en el tema de Como es mas rapido y eficiente llenar tablas temporales con procedimientos... en el foro de Mysql en Foros del Web. almacenados con el idusuario que esta viendo los datos o hacer directamente con joins en sql y mostrarlo directamente en php? tomen en cuenta que ...
  #1 (permalink)  
Antiguo 21/07/2013, 11:44
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Como es mas rapido y eficiente llenar tablas temporales con procedimientos...

almacenados con el idusuario que esta viendo los datos o hacer directamente con joins en sql y mostrarlo directamente en php?

tomen en cuenta que es una red social donde un usuario puede tener 300 amigos.
y que cada uno de ellos puede estar online al mismo tiempo. y viendo su lista de amigos.

lo que yo hice fue que llamo un procedimiento que llena una tabla temporal con su lista de amigos y le mando el idusuariologeado como parametro para cuando el usuario deje de ver la lista o haga determinada accion como borrar un amigo, entonces vieno la tabla temporal podran borrar el de la tabla real y luego se borrara todo de la tabla temporal donde el idusuariologeado sea y se cargara de nuevo la tabla temporal con la lista con el usuario borrado ya desaparecido de la lista.

osea si usuario 'a' tiene 300 amigos y usuario 'b' tiene 400 amigos y usuario 'c' tiene 200 amigos y esta en comun con a.

si esos 3 ven sus amigos al mismo tiempo la tabla temporal tendra 900 registros.

esto esta bien?

claro puedo poner un limit 30.

aun asi seran 90 registros en la temporal.



todo se filtrara por where idusuariologeado, por lo que cada quien solo vera su vista.
pero que opinan alguna otra propuesta?

antes lo hacia en php pero me salian como 200 lineas de codigo y ademas imagino que en php siempre sera mas lento que directamente en sql.



ahora para ver los usuarios generales sean o no mis amigos
lo bueno del procedimiento es que ya me tiene todos los campos como se deben mostrar, sabiendo que usuario es mi amigo a que usuario le envie solicitud, que usuario me la envio y que usuario no es mi amigo.

sin embargo si pongo un limite de 30 usuarios por pagina para ver todos los usuarios independientemente si son o no mis amigos.

si 30 usuarios ven la pagina esa entonces la tabla temporal tendra 30x30 registros, osea 900 registros.




bueno eso es en el caso de que sea una tabla temporal de ese tipo, pero si hago una tabla temporal en tiempo de ejecucion en el procedimiento almacenado podria ser mas rapido?



create table temporal+idusuario




y nomas alojar los datos del usuario y cada uno recogeria sus datos en su tabla.
pero no estoy seguro si esto sea mas eficiente que el filtro, que opinan?
de antemano gracias, acepto todas las sugerencias.


lo que actualmente se me ocurrio hacer fue llenar la tabla temporal enviar los datos al html y luego borrar los datos de la tabla temporal, que opinan?

Código SQL:
Ver original
  1. DELETE FROM tabla_temporal WHERE idusuario=usuario_logeado;
asi si hay 50 millones de usuarios conectados la tabla temporal no tendra millones de registros ya que cada usuario la llena con el procedimiento recoge los datos y la vacia, por lo que la consulta sql a la tabla temporal es mas ligera, bueno eso creo, orientenme


Tambien aconsejenme si es necesario poner un BanEliminar a las relaciones de amistad para llevar un historial?
eso implica que la tabla tenga muchos registros, pero creen que servira de algo?


no cabe duda cuando haces una pagina, cuando crees que ya avanzaste mucho descubres que se puede mejorar y lo que tenias lo sobreescribes y parece que no avanzas, bueno ustedes que opinan pues? verdad que es cierto.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 21/07/2013 a las 14:34

Etiquetas: campo, eficiente, join, php, rapido, registros, sql, tabla, tablas, temporales
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 06:40.