我有一个类似于下面的存储过程
SELECT *
FROM Table1
WHERE Tag IN (ids)
这Tag
是一个Integer
专栏。
我厌倦了将逗号分隔的值作为字符串传递到存储过程中,但它不起作用。然后我使用如下存储过程
SELECT *
FROM Table1
WHERE FIND_IN_SET(Tag, ids)
这很好用,唯一的问题是我的表非常大 - 与运行直接 SQL 语句时的 IN 相比,数百万行和使用 FIND_IN_SET 花费的时间太长。
最好的性能优化选项是什么?
是否有一个拆分函数可以将 id 转换为整数并为 IN 子句解析它?我认为那将是最好的选择。有什么建议或想法吗?