1
« en: Martes 27 de Octubre de 2009, 20:39 »
Resulta que me encuentro trabajando unas serie de consulticas en una base de datos con tabls de 500000registros, 400000 registros y necesito hacer una consulta que me las relacione pero el computador se me muere pensando.
mire la consulta es la siguiente en MYSQL :
SELECT fecha2, fechasolicitud, NumeroCuenta2, NombreOficina2, NombrePop2,Nuip,ValorTotal2 FROM dniproduccion JOIN bancopopulardos ON dniproduccion. Nuip=bancopopulardos. Identificacion ;
A ver les cuento son 2 tablas dniproduccion y bancopopulardos , necesito sacar los registros donde las columnas Identiciacion(popular2 es la tabla) y Nuip( dniproduccion es la tabla) coincidan y listo.
en cada columna Identificacion y Nuip tengo un indice asociado a ellas.
asi las definiciones de las tablas son:
CREATE TABLE `bancopopulardos` (
`fecha2` varchar(15) not NULL,
`NumeroCuenta2` bigint(20) not NULL,
`Oficina` smallint(6) not NULL,
`NombreOficina2` varchar(40) not NULL,
`CHEQCANJE` bigint(20) not NULL,
`CHQBPOPULAR` bigint(20) not NULL,
`Efectivo` bigint(20) not NULL,
`ValorTotal2` bigint(20) not NULL,
`NumDocumento` bigint(20) not NULL,
`Jornada` smallint(6) not NULL,
`NombrePop2` varchar(40) not NULL,
`Identificacion` bigint(20) not NULL,
`itemfinal` varchar(2) not NULL,
KEY `indicepopular2` (`Identificacion`))
CREATE TABLE `dniproduccion` (
`numpreparacion` bigint(20) not NULL,
`fechasolicitud` varchar(20) not NULL,
`Nuip` varchar(20) not NULL,
`IdClasExp` bigint(20) not NULL,
`CodRectificacion` varchar(5) not NULL,
`item` varchar(10) not NULL,
`CodOficina` varchar(10) not NULL,
`Nombre1` varchar(30) not NULL,
`Nombre2` varchar(30) not NULL,
`Apellido1` varchar(30) not NULL,
`Particula` varchar(30) not NULL,
`Apellido2` varchar(30) not NULL,
`Sexo` varchar(5) not NULL,
KEY `indiceproduccion` (`Nuip`))
Por ejemplo tengo conusltas de este tipo
SELECT SUM(ValorTotal2)AS Suma2 FROM dniproduccion INNER JOIN bancopopulardos ON dniproduccion. Nuip = bancopopulardos. Identificacion;
donde gasta casi 15 minutos el computador.
por ejemplo se me murere en un tipo de consutla asi:
SELECT SUM(SELECT SUM(ValorTotalp) AS Sumap FROM bancopopularpin INNER JOIN dniproduccion ON bancopopularpin. Identificacion = dniproduccion. Nuip)+(SELECT SUM(ValorTotal1) AS Suma1 FROM bancopopularuno INNER JOIN dniproduccion ON bancopopularuno. NoIdentificacion = dniproduccion. Nuip)+(SELECT SUM(ValorTotal2)AS Suma2 FROM dniproduccion INNER JOIN bancopopulardos ON dniproduccion. Nuip = bancopopulardos. Identificacion)+(SELECT SUM(ValorTotala) AS Sumaag FROM dniproduccion INNER JOIN bancoagrario ON dniproduccion. Nuip = bancoagrario. Nocedula)) AS SumaTotal ;
no se si exiista un amejor forma para esta consutla donde lo que busco es sumar datos de 4 diferentes tablas que cumplen unas compaaraciones entre columnas.
porr otro lado el EXPLAIN me muestra lo siguiente repecto a los indices en tablas dniproduccion y bancoagrario:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE dniproduccion ALL indiceproduccion,Nuip 223501
1 SIMPLE bancoagrario ref indiceagrario indiceagrario 8 bancocedulacion.dniproduccion.NUip 1
otra me muetsra lo siguiente dniproduccion y bancopopulardos:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE dniproduccion index indiceproduccion,Nuip indiceproduccion 8 223501 Using index
1 SIMPLE bancopopulardos ref indicepopular2 indicepopular2 8 bancocedulacion.dniproduccion.NUip 1