![]() |
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
我觉得这可以做得更优雅,但这至少在一个更好的解决方案的脓肿中起作用:) |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |