我在java中得到了一个这样的哈希图
{(1,'2018-06-29 10:19:33'),(4,'2018-06-29 10:19:34'),(10,'2018-06-29 10:19:38'),....}
Map的长度可能高达3000
和一个mysql表
id name updated
1, firstProduct, 2018-06-29 09:19:33
2, secondproduct, 2014-06-29 10:19:33
4, fourthproduct, 2016-06-29 09:19:33
10, tenthproduct, 2018-06-29 06:13:32
.......
Map中的键是表中的id字段,值是更新的时间戳字段。
我想得到表中时间戳大于Map值的所有产品。
就像
select * from products where id = 1 and updated > '2018-06-29 10:19:33'
select * from products where id = 4 and updated > '2018-06-29 10:19:34'
...
但Map上可能有多达3000个条目。
我正在考虑将map值传递给mysql存储过程。在这个过程中,while循环将为结果集中的每个map条目执行select语句,最后将结果集返回给java程序。
想知道这是否可能,我觉得有一个更好的解决办法,但无法找出。
1条答案
按热度按时间wa7juj8i1#
我会用java动态生成一个语句。
或者:
(mysql很可能无法有效地使用索引进行查询。)
或者,我们可以:
通过定义适当的索引,每个select都可以有效地利用该索引。但是使用这种方法,我们可能会在单个查询中达到表引用数的上限。因此,这种方法可能需要分解成块。
就我个人而言,我不会隐藏数据库过程的复杂性。
现在还不清楚实现一个数据库过程会给我们带来什么好处。