我是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.
那么哪种方法可以提供良好的性能?请指导我。
答案 0 :(得分:1)
MySQL对in
列表中的常量进行了很好的优化 - 它基本上对值进行排序并使用二进制搜索。这意味着in
会更快。此外,in
可以利用列上的索引。
此外,运行单个查询应该比运行多个查询更快。
因此,in
版本应该优于使用=
运行多个查询。