哪种方法更快/更好 - 多个相等或IN? SQL

时间:2015-07-23 21:32:22

标签: php sql

我想知道 - 哪种方法更快/更好?

$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

1 个答案:

答案 0 :(得分:1)

在大多数数据库中,两者是相同的。

但是,MySQL会对IN列表进行排序并使用二进制搜索。因此,IN应该比MySQL中的多个等于快。

Here是参考:

  

如果expr等于IN列表中的任何值,则返回1,否则返回   返回0.如果所有值都是常量,则根据它们进行评估   到expr的类型和排序。然后搜索该项目   使用二进制搜索。