La sous-requête SQL NOT IN entraîne une dégradation des performances
P粉696146205
P粉696146205 2023-09-12 12:21:35
0
2
616

Je souhaite utiliser un formulaire pour vérifier les rues.

  1. La requête n'est pas optimale
  2. Le temps de requête est trop long

Quelqu'un peut-il m'aider

SELECT id, strasse, plz
FROM `adress`
WHERE strasse NOT IN (
    SELECT street
    FROM post_plz
    WHERE `street` like adress.strasse AND plz like adress.plz
)
LIMIT 5;

P粉696146205
P粉696146205

répondre à tous(2)
P粉015402013
SELECT id, strasse, plz
FROM adress
WHERE NOT EXISTS ( SELECT NULL
                   FROM post_plz
                   WHERE post_plz.street = adress.strasse 
                     AND post_plz.plz = adress.plz )
-- ORDER BY {expression}  
LIMIT 5

Lorsque ORDER BY n'est pas utilisé, les résultats de la requête sont non déterministes (deux requêtes peuvent produire des résultats différents). Il est donc fortement recommandé d'ajouter un tri de lignes.

Les

Indexpost_plz (adress, plz)adress (strasse, plz, id)doivent être optimisés.

P粉739079318

Vous pouvez essayer d'utiliser une jointure à gauche entre la table et vérifier les valeurs qui ne correspondent pas

SELECT id, strasse, plz 

from `adress` 
left join  post_plz on strasse = street
  AND `street` like adress.strasse 
    AND plz like adress.plz
WHERE street is null
 LIMIT 5;

Vous pouvez essayer d'utiliser la jointure gauche entre les tables et vérifier les valeurs qui ne correspondent pas

SELECT id, strasse, plz 

from `adress` 
left join  post_plz on strasse = street
  AND `street` like adress.strasse 
    AND plz like adress.plz
WHERE street is null
 LIMIT 5;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal