小编典典

这两个查询之间的最佳做法

sql

昨天我在一个用户组会议上,他们指出使用参数化查询比对查询进行编码更好。这让我开始思考,这样做有什么好处(显然比这要大得多):

DECLARE @Client1 UNIQUEIDENTIFIER,
@Client2 UNIQUEIDENTIFIER
SET @ClientId1 ='41234532-2342-3456-3456-123434543212';
SET @ClientId2 = '12323454-3432-3234-5334-265456787654';

SELECT ClientName
FROM dbo.tblclient
WHERE id IN (@Client1,@Client2)

相对于:

SELECT ClientName
FROM dbo.tblclient
WHERE id IN ('41234532-2342-3456-3456-123434543212','12323454-3432-3234-5334-265456787654')

阅读 152

收藏
2021-05-16

共1个答案

小编典典

IN如果您的IN列表不时更改,则参数化查询和子句实际上不会一起实现。

根据设计,参数仅是一个值。考虑到安全性问题,必须手动执行除此以外的所有其他操作,例如SQLInjection

从性能的角度来看,对于参数化查询,您将具有更好的性能,特别是如果重复执行同一查询但参数值不同的话。但是,如果您有一个动态IN列表(有时有2项,有时是3项),则可能无法获得使用参数化查询的优势。

但是,不要失去希望。一些人已经能够实现这一点(参数化查询和IN子句)。再次,尽管如此,它并不微不足道。

2021-05-16