Tengo una consulta en la que deseo devolver todas las filas que están asociadas a una lista de valores. Se puede escribir este mismo simplemente como:Filtrado de consulta SQL por lista de parámetros
select * from TableA where ColumnB in (1, 2, 3, 5)
que podía generar esta consulta en C# y ejecutarlo. Sin embargo, esto es obviamente menos que ideal, ya que no utiliza parámetros, sufrirá al tratar de caché planes de consulta y es obviamente vulnerable a un ataque de inyección SQL.
Una alternativa es escribir esto como:
select * from TableA where ColumnB = @value
Esto podría ser ejecutado muchas veces por C#, sin embargo, esto resultará en N DB golpea.
La única otra alternativa que puedo ver es crear una tabla temporal y unirme de esa manera, sin embargo, no veo este punto porque sería más complejo y sufriría las mismas limitaciones que la primera opción.
Estoy usando SQL Server y OLDB, creando la consulta no es el problema. Estoy tratando de crear el proceso más eficiente.
¿Cuál de estos tres métodos es más eficiente? ¿Me he perdido una alternativa?
¿cómo quieres ejecutar la consulta? EF, LINQ, ADO, OLEDB? – paul
¿Y qué servidor? MySql, MsSql, otro? – mmdemirbas
OLDB y MsSQL, pregunta actualizada – Liath