循环sql语句返回这么慢

时间:2015-05-11 11:04:45

标签: mysql

首先,我在另一个函数中创建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个选择语句。

它使我的查询变得如此缓慢。

如何解决此问题以便查询快速运行?

提前致谢。

2 个答案:

答案 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')