首先,我在另一个函数中创建select语句。
从另一个函数中,我从数据库中的表中获取了一些字段,其中一个字段是variable
字段。
从那个sql语句我得到10000行或更多。
我使用variable
的字段再次生成一个sql语句。
$variable = (10000 values here)
然后我尝试根据值执行sql select语句:
$sql = $this->db->query
("
SELECT logintime FROM game_login WHERE data_id = '".$variable ."'
");
换句话说,这意味着我做了10000个选择语句。
它使我的查询变得如此缓慢。
如何解决此问题以便查询快速运行?
提前致谢。
答案 0 :(得分:1)
将长变量设为逗号分隔列表...
然后这样做......
SELECT logintime FROM game_login WHERE data_id IN ('$myvariable')
如果您的变量是数组,请执行此操作以使其成为逗号分隔的字符串。
$myvariable = '';
foreach $variable as $v) {
$myvariable .= $v.',';
}
答案 1 :(得分:1)
首先,您需要使用PHP的implode()函数为IN()参数创建逗号分隔字符串。像:
$instr = implode(",",$variable);
现在您可以将IN()用于10000个值。像:
SELECT logintime FROM game_login WHERE data_id IN ('$instr')