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