Améliorer une requete where not exists

Bonjour,

Ma requete est de la forme :

SELECT 'name','path','date'
FROM 'photos'as'pp'
where not exists
(select 'Nom du fichier' from 'photo info'
where ('photo info'.'Nom du fichier'='pp'.'name'
and 'photo info'.'Date Archivage'='pp'.'date'
and 'photo info'.'Path Recadre'='pp'.'path' ))


pour 5000 photos identique à une dizaine près, il faut prés un quart d heure ...
Cela devient long d'avancer pour les incohérences ;
- fichier déplacer
- supprimer
- modifier ...

Je me demandais si y avait pas un moyen d'aller plus vite.

Faut il recoder en php la boucle de recherche des nouveaux fichiers non repertorier ?

J ai vu une redaction de la forme
AND champ NOT IN (SELECT champ FROM table )
Mais y a pas de réponse sur cette astuce ...

https://forums.commentcamarche.net/forum/affich-5630930-sql-where-not-exists-recherch-de-table-vide

1 réponse

  1. Essaye :

    SELECT 'name','path','date'
    FROM 'photos'as'pp'
    where name not in
    (select 'Nom du fichier' from 'photo info'
    where ('photo info'.'Nom du fichier'='pp'.'name'
    and 'photo info'.'Date Archivage'='pp'.'date'
    and 'photo info'.'Path Recadre'='pp'.'path' ))
    0
    1. Avec cette requete, on est passé de 12 mm à 3mn30.
      Bravo ...
      Mais je pense que l on peut faire mieux ...
      Nb: Il faut 4mn pour reunitialiser toute la table avec toutes les propriétés.
      Si ce n'est pas instantané, ça n'ira pas...
      0
    2. Pour accélérer la requête, il faut jouer sur les index. Qu'est-ce que tu as défini comme index sur ta table ?
      0
    3. Pas de possibilité de jointure.
      'name','path','date' sont tout les champs de 'photos' qui une vue des répertoires des photos.

      Pour la table 'photo info', y a un index auto-increment pour faire beau...

      Je te reponds mais je ne vois pas comment faire avec une indexation
      si peut avoir un nouveau n importe où ...

      Indexer Photos
      puis une jointure entre 'photos' et 'photo info'
      et retrouver les manquants a l aide de not in???
      0
    4. Il faut que tu fasses 2 index :
      - un index sur (name,path,date) sur la table photos
      - un index sur name sur la table photo infos

      Ca devrait être mieux.
      0