Galera possuo a seguinte estrutura de tabela abaixo, esta tabela guarda posições gps dos veiculos, hoje está 800mil registros.
Como pode ver no codigo possuo os index para as colunas nrlat e nrlog, mas ao testar o seguinte sql abaixo ele não utiliza o index, e faz a busca em todos os registros.
alguém sabe me dizer o que estou fazendo de errado para ele ignorar o index?
select * from posicao_gps where nr_lat=-19.68916
"SQ_POSICAO_GPS";"SQ_VEICULO";"CD_EMPRESA";"SQ_DISPOSITIVO_VEICULO";"DT_POSICAO";"NR_ANTENA_RASTREAMENTO";"NR_LAT";"NR_LOG";"DS_POSICAO";"ID_IGNICAO";"VL_VELOCIDADE";"STATUS"
"3bad5ba72dcceea4012dcd56a200016a";"4926";"17";"232";"2011-01-28 13:55:14";NULL;"-19.68916";"-47.99126";"Uberaba - MG";"L";"76";"V"
explain select * from posicao_gps where nr_lat=-19.68916
"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1";"SIMPLE";"posicao_gps";"ALL";"Index 8";NULL;NULL;NULL;"823250";"Using where"
CREATE TABLE `posicao_gps` (
`SQ_POSICAO_GPS` VARCHAR(36) NOT NULL,
`SQ_VEICULO` INT(11) NULL DEFAULT NULL,
`CD_EMPRESA` INT(6) NULL DEFAULT NULL,
`SQ_DISPOSITIVO_VEICULO` BIGINT(19) NULL DEFAULT NULL,
`DT_POSICAO` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`NR_ANTENA_RASTREAMENTO` BIGINT(20) NULL DEFAULT NULL,
`NR_LAT` VARCHAR(50) NOT NULL,
`NR_LOG` VARCHAR(50) NOT NULL,
`DS_POSICAO` VARCHAR(400) NULL DEFAULT NULL,
`ID_IGNICAO` VARCHAR(1) NULL DEFAULT NULL,
`VL_VELOCIDADE` FLOAT NULL DEFAULT NULL,
`STATUS` VARCHAR(1) NOT NULL DEFAULT 'V',
PRIMARY KEY (`SQ_POSICAO_GPS`),
INDEX `Ref_90` (`SQ_VEICULO`),
INDEX `Ref_91` (`CD_EMPRESA`),
INDEX `IDX-DTPOSICAO-SQVEICULO-CDEMPRESA` (`DT_POSICAO`, `SQ_VEICULO`, `CD_EMPRESA`),
INDEX `SQ_DISPOSITIVO_VEICULO` (`SQ_DISPOSITIVO_VEICULO`),
INDEX `index 7` (`SQ_VEICULO`, `DT_POSICAO`),
INDEX `status` (`STATUS`),
INDEX `Index 8` (`NR_LAT`),
INDEX `Index 9` (`NR_LOG`),
CONSTRAINT `FK_posicao_gps_dispositivo_veiculo` FOREIGN KEY (`SQ_DISPOSITIVO_VEICULO`) REFERENCES `dispositivo_veiculo` (`SQ_DISPOSITIVO_VEICULO`) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT `Ref_90` FOREIGN KEY (`SQ_VEICULO`) REFERENCES `veiculo` (`SQ_VEICULO`) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT `Ref_91` FOREIGN KEY (`CD_EMPRESA`) REFERENCES `empresa` (`CD_EMPRESA`) ON UPDATE NO ACTION ON DELETE NO ACTION
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
Pergunta
shakall
Galera possuo a seguinte estrutura de tabela abaixo, esta tabela guarda posições gps dos veiculos, hoje está 800mil registros.
Como pode ver no codigo possuo os index para as colunas nrlat e nrlog, mas ao testar o seguinte sql abaixo ele não utiliza o index, e faz a busca em todos os registros.
alguém sabe me dizer o que estou fazendo de errado para ele ignorar o index?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados