【问题标题】:How to pass ID list to stored procedure using Hibernate in Grails如何在 Grails 中使用 Hibernate 将 ID 列表传递给存储过程
【发布时间】: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 列表传递给程序。

【问题讨论】:

    标签: mysql hibernate grails


    【解决方案1】:

    这确实有效,但是当我设置的 ID 较大时,该过程 执行持续很长时间。有没有更好的方法来传递 ID 列表 到程序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2011-07-13
      相关资源
      最近更新 更多