我有一个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和end<=:PARAM,但我只会从中获得范围,并且在应用程序中必须循环遍历每个参数并找到匹配的范围。
我看到过其他使用联合的例子,但是以前没有尝试过。
我还考虑过插入到临时表,使用连接选择,然后清空它,但不知道它是否会更有效。
我最终创建了一个长查询,一个包含5,000个条件的where cause,并以这种方式将其分解。表太大,无法在服务器端循环中放入内存。
如果它成为一个问题,我计划重构代码,让服务器将参数保存到一个文件,并直接在mysql服务器上运行查询,要么将它们转储到表中,要么创建立方体来保存匹配。