in子句中参数过多的MSSQL查询速度非常慢

in子句中参数过多的MSSQL查询速度非常慢,sql,sql-server,jpa,criteria,database-performance,Sql,Sql Server,Jpa,Criteria,Database Performance,我有一个带有2000个varchar2类型参数的IN子句的查询。我已根据执行计划应用了所需索引。 它工作得很慢。我正在寻找另一种解决办法。我发现的一种方法是使用这些值创建一个临时表,并使用join获取。除此之外还有别的办法吗?我在Java中使用spring数据JPA/标准进行查询。提前感谢。直接使用或使用将值批量加载到临时表中 使用 或者(SQL 2016+)将值作为JSON数组发送。只需创建表单的一个长字符串 ["Value1","Value2",&qu

我有一个带有2000个varchar2类型参数的IN子句的查询。我已根据执行计划应用了所需索引。
它工作得很慢。我正在寻找另一种解决办法。我发现的一种方法是使用这些值创建一个临时表,并使用join获取。除此之外还有别的办法吗?我在Java中使用spring数据JPA/标准进行查询。提前感谢。

直接使用或使用将值批量加载到临时表中

使用

或者(SQL 2016+)将值作为JSON数组发送。只需创建表单的一个长字符串

["Value1","Value2","Value3"] 
并将其作为参数传递给查询,如:

select *
from SomeTable
where SomeColumn in ( select value from openjson(@jsonValues) with (value varchar(200) '$') )
或者对你做同样的事情


您也可以使用,但这也仅在SQL 2016+上可用,JSON更健壮。

将值存储在临时表中是一种方法。