|
|
1
1
您可以用Perl构造一个SQL查询,该查询将使用多个值,如下所示:
|
|
|
2
2
这听起来是个有趣的问题。我创建了一个这样的测试范围表:
我在该表中插入了50000行,每个行的最大值最小值为10,如下所示:
获取与整数列表匹配的范围的Perl代码是创建一个临时表来保存整数,并让MySQL为我进行匹配:
这会给我返回正确的列表。在mysql客户机中:
或者,对于匹配值列表:
MySQL(至少5.0,我在上面)通过解释说它没有以正常的方式使用索引进行比较。但是,它报告说
Range checked for each record
哪一个
essentially
意味着它会像你想的那样:处理来自
它很快,但我不知道你会比我测试的8和50K多出多少行。我的猜测是,如果要查找的值超过一小部分,那么创建这样的临时表将是最佳解决方案。 |
|
|
3
1
老实说,如果要检查的列表是单数字大小的,我可以在Perl中逐个检查(检查是您的查询),或者如果您担心连接/查询启动开销,请将它们填充到临时表中,然后在SQL循环中循环,一次将1个cValue提取到变量中,删除该va从临时表中退出,然后再次运行——在循环内部,您自己对该变量进行一次检查查询。 这里是Sybase代码-希望它能轻松地转换为MySQL
我觉得这可以做得更优雅,但这至少在一个更好的解决方案的脓肿中起作用:) |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |
|
|
A.Ellett · 测试-t STDIN与-t<STDIN> 2 年前 |
|
|
con · 如何跳转到foreach迭代的特定点? 2 年前 |