Pregunta

Tengo una mesa de paquetes
paquetes contiene 2 campos de ID y el total de
Ambos son de larga bigint 20 y claves primarias
Sólo ID es auto incremento
en todos los récord total = id
llegué 10000 registros digamos id = 1 - 10000 y Total = 1 - 10000

Me dieron 2 casi idénticos consultas 1 da como resultado un tiempo de carga muy, muy largo y una completa casi instantáneamente.

muy, muy largo tiempo de carga:

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

muy corto tiempo de carga:

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

esto sucede mientras que los valores de ID y totales son idénticos.

¿Fue útil?

Solución

  

son tanto en longitud bigint 20 y claves primarias

No se puede tener dos claves principales de una tabla.

Parece que usted no tiene un índice en packets.total

Crear y ver si ayuda:

CREATE INDEX ix_packets_total ON packets (total)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top