Cita:
Iniciado por ocp001a No, no hablo de tablas temporales, si no de tablas permanentes, con consultas precargadas.
Imagina lo siguiente:
Una tienda vende más de 10,000 productos al día, digamos que de 5 tipos diferentes, y se guarda un registro por cada producto:
producto,tipo,cantidad,cliente,hora-fecha,tienda,vendedor
Si al cabo de un año quieres consultar, el sistema tendría que bucear entre 3,650,000 registros, sin embargo, las consultas las puedes acotar, siempre y cuando sean similares, sumando.
Quien quiera consultar un año, no va a querer ver de un golpe todos los registros por lo que en la consulta por año podrías eliminar algunos datos, sumando por los demás campos:
producto,tipo,cantidad,vendedor
así te quedarían unos registros con la cantidad de productos de cada tipo por vendedor.
de igual manera puede sumar para hacer otros tipos de conusulta
producto,tipo,cantidad,cliente
De aquí podrías obtener los mejores clientes, qué productos comprar etc.
De igual manera puedes ir haciendo consultas precargadas por mes, semana y día, según los datos que las quieran consultar, y puedes ir eligiendo las tablas que más te convengan, como decía, si quieren consultar por año puedes buscar en la tabla de meses y sumar, si quieren por mes consultar en la de semanas y así, de modo que si alguien quiere consultar más detalladamente, vayas eligiendo la tabla más adecuada, hasta llegar al máximo detalle.
Hay varias formar de hacer estas preconsultas, dependiendo de tus necesidades, pero siempre es conveniente que agrupes por fechas los datos más importantes que quieran ver.
No estoy seguro de haber entendido, pero te refieres a guardar los resultados de las consultas? no es mala idea, ya habíamos tenido algunas ideas parecidas como guardar tablas secundarias con menos datos, por ejemplo una que solo tuviera una semana y otra solo un mes, etc.
Cita:
Iniciado por jercer Algo como:
SET @cont = 0;
SELECT @num := COUNT(id) FROM tabla;
SELECT *, (@cont := @cont +1) AS INCREMENTAL
FROM tabla
GROUP BY id
HAVING INCREMENTAL % CEILING(@num / 5) = 1;
Esta consulta salió excelente, solo demora 0.5 segundos y puede hacerse con promedios, hice esto:
SET @cont = 0;
SELECT @num := COUNT(`RecId`) FROM tablagigante;
SELECT
AVG(`Press`), (@cont := @cont +1) AS INCREMENTAL
FROM tablagigante
GROUP BY `RecId`
HAVING INCREMENTAL % CEILING(@num / 50) = 1;
y si no me equivoco lo que me devuelve es el promedio de los datos dividido en 50 partes lo cual es perfecto! a todos les gustó la idea.
Mi pregunta sería si es posible hacer algo como eso pero suponiendo que hay un campo llamado "dia", y sacar el promedio por dia?
Otra pregunta sería, como escribo la consulta en PHP? por que devuelve más de un resultado...
Cita:
Iniciado por jercer No obstante hacer eso no quita que te plantees optimizar esa tabla, haciendola más ligera, ya sea "cortandola" o directamente borrando datos, ahora estoy pensando, sirve de algo, saber como estaba el neumático de un camión el mes pasado???
Es más que nada por un asunto estadístico, quieren comparar distintas marcas de neumáticos, distintas temperaturas, tamaños de neumáticos, etc. a traves del tiempo, buscando cuales sean mejores, además de conocer con exactitud los factores que más afectan los neumáticos.
Por otro lado, alguien sabe si las variables en PHP tienen limite?
$var=$cadena_infinita;
supongo que debe tener un limite no?