J'ai une requête où je veux retourner toutes les lignes qui sont associées à une liste de valeurs. Vous pouvez écrire cela très simplement:Filtrage des requêtes SQL par liste de paramètres
select * from TableA where ColumnB in (1, 2, 3, 5)
Je pourrais générer cette requête en C# et l'exécuter. Cependant, ceci n'est évidemment pas idéal car il n'utilise pas de paramètres, il souffrira en essayant de mettre en cache des plans de requête et est évidemment vulnérable à une attaque par injection SQL.
Une alternative est d'écrire cela comme:
select * from TableA where ColumnB = @value
Cela pourrait être exécuté plusieurs fois par C#, mais cela se traduira par DB N frappe. La seule autre alternative que je peux voir est de créer une table temporaire et de la joindre de cette façon, mais je ne vois pas ce point car cela serait plus complexe et souffrirait des mêmes limitations que la première option. J'utilise SQL Server et OLDB, la création de la requête n'est pas le problème. J'essaie de créer le processus le plus efficace.
Laquelle de ces trois méthodes est la plus efficace? Ai-je manqué une alternative?
Comment voulez-vous exécuter la requête? EF, LINQ, ADO, OLEDB? – paul
Et quel serveur? MySql, MsSql, autre? – mmdemirbas
OLDB et MsSQL, question mise à jour – Liath