Sql server 设置变量时的SQL性能

Sql server 设置变量时的SQL性能,sql-server,tsql,Sql Server,Tsql,我使用的是SQL Server数据库,我有一个名为EDI\u CUSTOMER的表,到目前为止,该表只有几百条记录 顾客 代码 阿克塞尔 AA 阿克塞尔 AB 布瑞恩 BQ 布瑞恩 溴 查看您的SQL,您似乎正在使用SQL Server 您可以使用EXISTS,因为groupby将给查询带来额外的成本,并且由于您只对记录的存在感兴趣,EXISTS将适合这里 您可以在customer列上创建索引,以获得更好的性能 使用存在如下: SELECT @sendEDI = 'Y' WHERE EXIST

我使用的是SQL Server数据库,我有一个名为
EDI\u CUSTOMER
的表,到目前为止,该表只有几百条记录

顾客 代码 阿克塞尔 AA 阿克塞尔 AB 布瑞恩 BQ 布瑞恩 溴
查看您的SQL,您似乎正在使用SQL Server

您可以使用
EXISTS
,因为
groupby
将给查询带来额外的成本,并且由于您只对记录的存在感兴趣,
EXISTS
将适合这里

您可以在
customer
列上创建
索引
,以获得更好的性能

使用
存在
如下:

SELECT @sendEDI = 'Y' 
WHERE EXISTS (SELECT 1 FROM EDI_CUSTOMER WHERE customer = 'AXEL')

查看您的SQL,您似乎正在使用SQL Server

您可以使用
EXISTS
,因为
groupby
将给查询带来额外的成本,并且由于您只对记录的存在感兴趣,
EXISTS
将适合这里

您可以在
customer
列上创建
索引
,以获得更好的性能

使用
存在
如下:

SELECT @sendEDI = 'Y' 
WHERE EXISTS (SELECT 1 FROM EDI_CUSTOMER WHERE customer = 'AXEL')

您正在使用哪个数据库系统?为什么不使用一些随机数据对查询进行基准测试?我使用的是Sql Server。请通过编辑对您的问题进行澄清。另外,您的基准测试返回了什么?您使用的是哪个数据库系统?为什么不使用一些随机数据对查询进行基准测试?我使用的是Sql Server。请通过编辑对您的问题进行澄清。另外,您的基准测试返回了什么?可能,在
EDI\u客户
之后使用(NOLOCK)的
也会很有用。
NOLOCK
会导致行丢失。(还有重复的行,但这与此处无关)@MuzafferGalata,请参见谢谢@EricBrandt。也许,在
EDI_CUSTOMER
之后加上(NOLOCK)
也会很有用。
NOLOCK
会导致行丢失。(也有重复的行,但这与此无关)@MuzafferGalata,请参阅谢谢@EricBrandt。