mysql性能差异在哪里id = vs其中id IN()

时间:2015-03-23 11:53:43

标签: mysql sql join where

我是mysql的新手。我有一个查询,从这个查询我得到一些stock_ids。在第二个查询我需要传递那些stock_ids。为此,我将获取数组中的所有stock_id。现在我的问题是我可以通过哪种方式将那些stock_ids传递给第二个查询。为此,我有两种方法。

First approach:
$array_cnt = count($stockid_array);
for($i = 0; $i<$array_cnt;$i++)
{
$sql = "select reciever_id,sender_identifier,unique_stock_id,vat_number,tax_number from stocktable where stock_id = '".$stockid_array[$i]."'";
// my while loop
}
Another approach is 

$sql = "reciever_id,sender_identifier,unique_stock_id,vat_number,tax_number from stocktable where stock_id in ('1','2','3','4','5','6','7','8','9');
//while loop comes here.

那么哪种方法可以提供良好的性能?请指导我。

1 个答案:

答案 0 :(得分:1)

MySQL对in列表中的常量进行了很好的优化 - 它基本上对值进行排序并使用二进制搜索。这意味着in会更快。此外,in可以利用列上的索引。

此外,运行单个查询应该比运行多个查询更快。

因此,in版本应该优于使用=运行多个查询。