Sql server 设置变量时的SQL性能
我使用的是SQL Server数据库,我有一个名为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
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。