我想知道 - 哪种方法更快/更好?
$string = '';
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for($i = 0; $i < 10; $i++){
if(!empty($string)){
$string .= ' OR ';
}
$string .= ' `id` = '.$array[$id];
}
或者:
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$string = implode(', ', $array);
$string = '`id` IN ('.$string.')';
在SQL中:
'SELECT * FROM `table` WHERE '.$string
答案 0 :(得分:1)
在大多数数据库中,两者是相同的。
但是,MySQL会对IN
列表进行排序并使用二进制搜索。因此,IN
应该比MySQL中的多个等于快。
Here是参考:
如果expr等于IN列表中的任何值,则返回1,否则返回 返回0.如果所有值都是常量,则根据它们进行评估 到expr的类型和排序。然后搜索该项目 使用二进制搜索。