Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2011, 23:06
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Pregunta Tiempos en consulta de Geolocalizacion exagerado

BUENAS amigos....

Me consegui unas tablas con info de geolocalizacion, todo perfecto salvo que al consultar la mas grande, de unos 3 millones de registros, el tiempo a veces llega casi a los 15 segundos en un AMD X4 con 3Gb de RAM!

En promedio, no baja de 1.5 segundos.......que creo que para una consulta es MUCHISIMO!

Para determinar el pais debo obtener la IP, pasarla a formato IPv4 buscarla entre columnas que definen rangos en la tabla CityBlocks y luego con el locId buscar en la tabla CityLocation:

Cita:
SELECT locId FROM CityBlocks WHERE $ip BETWEEN startIpNum AND endIpNum LIMIT 1
SELECT * FROM CityLocation WHERE locId = $locId LIMIT 1
Aca las tablas

Cita:
CREATE TABLE IF NOT EXISTS `cityblocks` (
`startIpNum` bigint(20) NOT NULL,
`endIpNum` bigint(20) NOT NULL,
`locId` bigint(20) NOT NULL,
PRIMARY KEY (`startIpNum`),
UNIQUE KEY `locId` (`startIpNum`,`endIpNum`,`locId`),
KEY `endIpNum` (`endIpNum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `citylocation` (
`locId` bigint(20) NOT NULL,
`country` varchar(2) NOT NULL,
`region` varchar(2) NOT NULL,
`city` varchar(50) NOT NULL,
`postalCode` varchar(10) NOT NULL,
`latitude` int(11) NOT NULL,
`longitude` int(11) NOT NULL,
`metroCode` int(11) NOT NULL,
`areaCode` int(11) NOT NULL,
PRIMARY KEY (`locId`),
UNIQUE KEY `locId` (`locId`,`country`,`region`,`city`,`postalCode`,`l atitude`,`longitude`,`metroCode`,`areaCode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
__________________
Salu2!

Última edición por Italico76; 11/02/2011 a las 23:26