Question

J'ai un paquets de table
paquets contient 2 champs id total et
ils sont à la fois la longueur de bigint 20 et les clés primaires
seulement id est incrémentation automatique
dans tous les id = total de dossier
J'ai 10000 enregistrements disons id = 1-10000 et total = 1 - 10000

i reçu 2 requêtes presque identiques 1 résultats dans un temps de chargement très très longue et on complète presque instantanément.

très très long temps de chargement:

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

très peu de temps de chargement:

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

cela se produit alors que les valeurs de id et au total sont identiques.

Était-ce utile?

La solution

  

ils sont à la fois la longueur bigint 20 et les clés primaires

Vous ne pouvez pas avoir deux clés primaires dans une table.

Il semble que vous ne disposez pas d'un index sur packets.total

Créer et voir si elle aide à:

CREATE INDEX ix_packets_total ON packets (total)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top