Domanda

Ho una tabella pacchetti
pacchetti contiene 2 campi ID e
totale sono entrambi lunghezza bigint 20 e le chiavi primarie
solo id è incremento automatico
in ogni record totale = id
ho ottenuto 10000 record diciamo id = 1 - 10000 e totale = 1 - 10000

Ho ottenuto 2 quasi identiche interrogazioni 1 risultati in un tempo di caricamento molto molto lungo e una completa quasi istantaneamente.

tempi di caricamento molto molto lungo:

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

tempo di caricamento molto breve:

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

questo accade mentre i valori di id e totale sono identici.

È stato utile?

Soluzione

  

entrambi siano lunghezza bigint 20 e chiavi primarie

Non è possibile avere due chiavi primarie in una tabella.

Sembra che non si dispone di un indice su packets.total

Crea e vedere se aiuta:

CREATE INDEX ix_packets_total ON packets (total)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top