【发布时间】:2012-04-17 15:01:44
【问题描述】:
我需要从与给定ID 匹配的表中检索一些字段。目前,我构建了一个sql语句
SELECT a, b, c
FROM d
WHERE id = @id
然后使用DataReader 执行它。
我还可以编写一个以id 作为参数的存储过程。
我想知道哪个对性能更友好。
编辑:我正在使用参数化查询,对问题进行了编辑以反映这一点。
【问题讨论】:
-
我不认为
DataReader是您要考虑的事情——这个类只是读取查询的结果。我认为如果没有前 3 个字,您的问题会更有意义。 -
存储过程和正确参数化的查询将执行几乎相同的操作。但在查询中使用 parameters 很重要 - 例如
SELECT ... FROM d WHERE ID = @ID并且您不只是将您的 SQL 语句串在一起。这种做法也会为 SQL 注入攻击打开所有大门——这是一个非常糟糕的主意!
标签: c# sql-server performance stored-procedures ado.net