【发布时间】:2020-10-07 08:56:10
【问题描述】:
对于 SQL 查询,我需要将输入字符串拆分为其整数部分,并根据提供的整数从表中选择值。
我的问题:如果有很多整数 (>300),查询会越来越慢,即对于大约 600 个整数,它使用超过一分钟!
这里是一个执行查询的小例子:
DECLARE @inputStr VARCHAR(MAX) = '234,2344,12,523,5667,9825,345'
SELECT
surname,
firstname
FROM Addresses
WHERE id IN (SELECT CAST(value AS INTEGER) FROM STRING_SPLIT(@inputStr, ',')))
这是否存在已知问题或我可以做的任何改进?
很高兴得到任何帮助!
【问题讨论】:
-
我能给你的最好建议是不要乱用分隔字符串(如果可能的话),而是将应用程序 + sql 代码更改为使用表值参数。
-
能否贴出
Addresses的实际执行计划和表大小/索引?
标签: sql sql-server performance split