à Derby et/ou MySQL, je me demande sur les performances de:par rapport joint corrélative existe des sous-requêtes
select c0.documentid from contentblob as c0 where c0.documentid > ?
and c0.blobid = ?
and exists (select * from contentblob c1 where c1.documentid = c0.documentid
and c1.blobid = ?)
order by c0.documentid
Notez que des valeurs différentes seront fournies pour les deux comparaisons blobid. Ce que fait cette requête est de retourner deux fois les identifiants qui apparaissent dans la table (au moins): une fois avec blobid1 et une fois avec blobid2.
par rapport à l'auto-jointure équivalente,
en supposant, bien sûr, les indices sur les colonnes de documentid et blobid de la table contentblob.
Dans le cas où cela n'est pas clair, le schéma correspondant est une table avec deux colonnes varchar, documentid et blobid. Ils sont composés pour former la clé primaire.
S'il n'y a rien pour cela mais pour se renseigner sur l'analyseur de requête dans la base de données, je vais le faire.
Voir la modification pour ce que j'espère va clarifier. Deux blobids différents sont impliqués. – bmargulies
Ah! Aurait dû repérer cela - changé la réponse en conséquence! –
J'ai toujours pensé que les instructions EXISTS() étaient plus claires à lire et qu'elles ne créaient pas de doublons potentiels dans le jeu de résultats. –