J'ai besoin d'écrire une requête pour récupérer une grosse liste d'id.
Nous soutenons plusieurs backends (MySql, Firebird, sql server, Oracle, Postgress ...) donc j'ai besoin d'écrire un standard SQL.
La taille de la pièce d'identité peut être grande, la requête serait généré par programmation. Alors, que pensez-vous est la meilleure approche?
1) l'Écriture d'une requête à l'aide DE
SELECT * FROM TABLE WHERE ID IN (id1, id2, ..., idn)
Ma question ici est de. Ce qui se passe si n est très grand? Aussi, ce sujet de la performance?
2) l'Écriture d'une requête à l'aide de OU
SELECT * FROM TABLE WHERE ID = id1 OR ID = id2 OR ... OR ID = idn
Je pense que cette approche n'a pas de n limite, mais que dire de la performance si n est très grand?
3) l'Écriture d'une solution par programmation:
foreach (id in myIdList)
{
item = GetItemByQuery("SELECT * FROM TABLE WHERE ID = " + id);
myObjectList.Add(item);
}
Nous avons connu quelques problèmes avec cette approche lorsque le serveur de base de données est interrogée sur le réseau. Normalement est préférable de faire une requête qui récupère tous les résultats, mieux que beaucoup de petites requêtes. Peut-être que je me trompe.
S'il vous plaît, pourriez-vous DB experts m'expliquer ce que serait une bonne solution pour ce problème?
Merci d'avance