我有一个mysql表,它存储两列之间的范围,如下所示:
id start end
1 1 9
2 20 49
我需要创建一个查询,允许用户提交最多10,000个整数值的列表,并且需要检查该值是否在范围内。我想避免运行10,000个单独的查询。我想要一个如下所示的数据集,其中PARAM是用户提交的10,000个整数值之一:
start end PARAM
1 9 4
20 49 18
1 9 6
1 9 8
我考虑过使用扩展的WHERE子句,比如start> =:PARAM AND end< =:PARAM,但是我只能从中得到范围,并且在应用程序中必须循环遍历每个参数并找到匹配范围。
我看到了工会的其他例子,但以前没有尝试过。
我还想过插入临时表,选择使用连接,然后清空它,但不知道它是否会更有效。
答案 0 :(得分:0)
我最终创建了一个长查询,这是一个具有5,000个条件的原因,并以这种方式进行分解。该表太大,无法在服务器端循环中进入内存。
如果它成为问题我计划重构代码,让服务器将参数保存到文件并直接在mysql服务器上运行查询,将它们转储到表中或创建立方体来保存匹配。