【发布时间】:2021-03-06 04:12:11
【问题描述】:
我正在尝试将 ID 列表作为参数传递给 Grails 中的 MySQL 存储过程。我找到了一个可行的解决方法,但问题是它太慢了,因为它使用 FIND_IN_SET MySQL 函数来遍历作为字符串 ("1,2,3,4") 传入的 id 列表。
程序调用:
Sql sql = new Sql(dataSource)
def rawQueryResult = sql.rows("call testProcedure(?)", ["1,2,3,4"])
存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `testProcedure`(
IN idList TEXT,
)
BEGIN
SELECT tt.id
FROM test_table tt
WHERE FIND_IN_SET(tt.id, idList);
END
这确实有效,但是当我设置的 ID 较大时,程序执行会持续很长时间。有没有更好的方法将 ID 列表传递给程序。
【问题讨论】: