这两种方法中哪一种更快。
方法一:
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 小提琴示例