有一个循环的查询或使用MySQL(IN)?

时间:2013-11-18 13:18:41

标签: php mysql sql

这两种方法中的哪一种更快。

方法A:

for( $i = 0; $i < 10; $i++ )
    // SELECT * FROM table WHERE id = $i ( run and fetch )

方法B:

for( $i = 0; $i < 10; $i++ )
    $ids .= $i . ",";

// SELECT * FROM table WHERE id IN ( $ids ) 

3 个答案:

答案 0 :(得分:2)

如果开始为0且结尾为10,那么为什么不在查询

之间使用
select * from tbl where  id between 0 and 10

我认为这将是最快的

答案 1 :(得分:1)

方法A在任何时间点都不是推荐的。因为每次都会使用mysql的IN()来命中mysql服务器。使用IN(),您可以在单个查询中完成它,它将比方法A更快更有效。 还有一种更好的方法,如下所示。使用implode()你会喜欢这样:

$array = array(1,2,3,4);
$comma_separated = implode(",", $array);
// SELECT * FROM table WHERE id IN ( $ids )

答案 2 :(得分:1)

使用以下方法:

  $ids=array();
  for( $i = 0; $i < 10; $i++ )
  {
    $ids[]=$i;
  }

  if(count($ids) > 0)
  {
    $query="SELECT * FROM table WHERE id IN (". implode(',',$ids)." )";
  }

PHP Fiddle Example