如何使用Grails中的Hibernate将ID列表传递给存储过程



我正试图将ID列表作为参数传递给Grails中的MySQL存储过程。我找到了一个可行的解决方法,但问题是它太慢了,因为它使用了FIND_IN_SET MySQL函数,该函数迭代以字符串形式传入的id列表("1,2,3,4"(。

程序调用:

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列表传递给过程。

但是,当我有一个大的ID集时处决持续很长时间。有没有更好的方法通过ID列表到程序。

否。就存储过程的执行时间而言,没有其他方法可以更好地将ID列表传递到存储过程中。

最新更新