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


Have a loop of queries or use MySQL (IN)?

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

方法一:

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 ) 

如果开头为 0 而结尾为 10,那么为什么不使用 between query

select * from tbl where  id between 0 and 10

我认为这将是最快的

方法 A 在任何时间点都不会被推荐。因为它每次都会命中 mysql 服务器,而不是使用 mysql 的 IN()。使用 IN(),您可以在单个查询中执行此操作,它将比方法 A 更快、更高效。以及更好的方法,如下所示。使用 implode() 你可以这样做:

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

使用以下方法:

  $ids=array();
  for( $i = 0; $i < 10; $i++ )
  {
    $ids[]=$i;
  }
  if(count($ids) > 0)
  {
    $query="SELECT * FROM table WHERE id IN (". implode(',',$ids)." )";
  }

PHP 小提琴示例