tiempo de selección de carga anidada en MySQL
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.
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