【发布时间】:2013-07-12 13:48:50
【问题描述】:
我有一个类似于下面的存储过程
SELECT *
FROM Table1
WHERE Tag IN (ids)
这里的Tag 是Integer 列。
我厌倦了将逗号分隔值作为字符串传递到存储过程中,但它不起作用。然后我使用了如下的存储过程
SELECT *
FROM Table1
WHERE FIND_IN_SET(Tag, ids)
这很好用,唯一的问题是我的表非常大 - 数百万行,与运行直接 SQL 语句时的 IN 相比,使用 FIND_IN_SET 花费的时间太长。
最好的性能优化选项是什么?
是否有一个 split 函数可以将 id 转换为整数并为 IN 子句解析它?我认为那将是最好的选择。有什么建议或想法吗?
【问题讨论】:
标签: mysql stored-procedures sql-optimization sqlperformance