Ho una query in cui voglio restituire tutte le righe associate a un elenco di valori. Potresti scrivere questo semplicemente come:Filtro query SQL per elenco di parametri
select * from TableA where ColumnB in (1, 2, 3, 5)
Potrei generare questa query in C# ed eseguirla. Tuttavia questo è ovviamente meno che ideale in quanto non utilizza i parametri, ne risentirà quando si tenta di memorizzare nella cache i piani di query ed è ovviamente vulnerabile a un attacco di SQL injection.
Un'alternativa è quella di scrivere questo come:
select * from TableA where ColumnB = @value
Questo potrebbe essere eseguito più volte da C#, ma questo si tradurrà in N DB colpisce.
L'unica altra alternativa che posso vedere è creare una tabella temporanea e unirla in questo modo, tuttavia non vedo questo punto come sarebbe più complesso e risentire delle stesse limitazioni della prima opzione.
Sto usando SQL server e OLDB, la creazione della query non è il problema. Sto cercando di creare il processo più efficiente.
Quale di questi tre metodi è più efficiente? Ho perso un'alternativa?
come si desidera eseguire la query? EF, LINQ, ADO, OLEDB? – paul
E quale server? MySql, MsSql, altro? – mmdemirbas
OLDB e MsSQL, domanda aggiornata – Liath