Pergunta

Eu tenho um pacotes de mesa
pacotes contém 2 campos id total e
ambos são comprimento bigint 20 e chaves primárias
somente ID é auto incremento
em cada total recorde = id
eu tenho 10000 registros digamos id = 1-10000 e Total = 1-10000

eu tenho 2 quase idênticas consultas 1 conduzir a uma muito, muito tempo de carregamento e um completa quase que instantaneamente.

tempo de carregamento muito longo:

set @i = 0; 
SELECT *
FROM packets as p1
WHERE p1.total in ( SELECT p2.total
FROM packets as p2 where ( ( @i := ( @i + 1 ) )

curto tempo de carregamento:

set @i = 0;
SELECT *
FROM packets as p1
WHERE p1.id in ( SELECT p2.id
FROM packets as p2 where ( ( @i := ( @i + 1 ) )

isso acontece enquanto os valores de ID e totais são idênticos.

Foi útil?

Solução

ambos são comprimento bigint 20 e chaves primárias

Você não pode ter duas chaves primárias em uma tabela.

Parece que você não tem um índice em packets.total

Criar-lo e ver se isso ajuda:

CREATE INDEX ix_packets_total ON packets (total)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top