Améliorer une requete where not exists

Fallentree Messages postés 2445 Statut Membre -  
 Joe -
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
A voir également:

1 réponse

Joe
 
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
Fallentree Messages postés 2445 Statut Membre 209
 
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
Joe
 
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
Fallentree Messages postés 2445 Statut Membre 209
 
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
Joe
 
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