Skip navigation links

MySQL Forums


Advanced Search

Select y View
Posted by: juan hernandez ()
Date: October 31, 2009 12:38PM

Hola a todos, tengo una base de datos llamada dbdatos, la cual tiene en su interior aproximamente 20.000 tablas. La extructura de cada tabla es la siguiente:

+-----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| CANTIDAD | decimal(19,2) | YES | | NULL | |
| PRODUCTO | varchar(60) | YES | | NULL | |
| PRECIO SIN IGIC | decimal(19,2) | YES | | NULL | |
| PRECIO CON IGIC | decimal(19,2) | YES | | NULL | |
| SUBTOTAL | decimal(19,2) | YES | | NULL | |
| TOTAL | decimal(19,2) | YES | | NULL | |
| PRECIO COSTO | decimal(19,2) | YES | | NULL | |
| TOTAL COSTO | decimal(19,2) | YES | | NULL | |
| DESCUENTO | decimal(19,2) | YES | | NULL | |
| IGIC | decimal(19,2) | YES | | NULL | |
| FAMILIA | varchar(60) | YES | | NULL | |
| SUBFAMILIA | varchar(60) | YES | | NULL | |
+-----------------+---------------+------+-----+---------+-------+

Imaginaros que cada tabla se llama t1, t2... así hasta t20000.

Para poder calcular los productos más vendidos en función de la factura, realizo lo siguiente:

1.- Creo un view de la siguiente forma:
CREATE OR REPLACE VIEW dbdatos.documentos AS SELECT * FROM dbdatos.t0 UNION ALL (SELECT * FROM dbdatos.t1)......, así hasta aproximadamente 20000 tablas (supongamos).

2.- Una vez creada la vista dbdatos.documentos, ejecuto un select de la siguiente forma:
SELECT Producto, sum(Cantidad) as Total FROM dbdatos.documentos WHERE `Producto`<>'' GROUP BY `Producto` order by Total DESC limit 2;

(lo del limit es para que veais el resultado, pero en realidad no usa el limit)

+----------------------+--------+
| Producto | Total |
+----------------------+--------+
| PEPINOS | 803.00 |
| TOMATES | 739.00 |
+----------------------+--------+

Tengo varios problemas:

1.- El más importante porque apesar de que tarden las consultas, si no soluciono este si que voy mal:

memory exhausted near ') UNION ALL (SELECT * FROM dbdatos.t5330) UNION ALL (SELECT * FROM dbdatos.t53' at line 1

parece ser que la cadena que le envío con todas las tablas juntas es muy larga u ocupa mucha memoria. He estado buscando sobre el error y poco he conseguido.

2.- ¿Véis alguna manera de agilizar todo?

Se que el hecho de tener 20000 tablas no es muy adecuado pero por ahora es la única solución.



Muchas gracias a todos.

Options: ReplyQuote


Subject Views Written By Posted
Select y View 244 juan hernandez 10/31/2009 12:38PM
Re: Select y View 110 Gonzalo Garcia Correas 10/31/2009 05:13PM
Re: Select y View 106 Juan Carlos Alafita 10/31/2009 09:09PM
Re: Select y View 94 juan hernandez 11/01/2009 05:19AM
Re: Select y View 139 Gonzalo Garcia Correas 11/01/2009 07:49AM
Re: Select y View 115 juan hernandez 11/01/2009 02:19PM
Re: Select y View 98 Gonzalo Garcia Correas 11/01/2009 07:03PM
Re: Select y View 97 juan hernandez 11/02/2009 05:50AM
Re: Select y View 107 Gonzalo Garcia Correas 11/02/2009 12:37PM
Re: Select y View 107 juan hernandez 11/02/2009 04:51PM
Re: Select y View 115 Gonzalo Garcia Correas 11/03/2009 10:28AM
Re: Select y View 77 juan hernandez 11/06/2009 03:25AM
Re: Select y View 85 Gonzalo Garcia Correas 11/06/2009 05:05AM


Sorry, only registered users may post in this forum.