在(a,b,c ...)或WHERE =循环中哪一个通常表现更好?

时间:2017-10-26 04:23:36

标签: mysql sql

  1. 我们使用SELECT * FROM profile WHERE id IN (1,2,3...)获取ResultSet中的所有结果。它基本上是SELECT * FROM profile WHERE id='1' OR id='2' OR id='3'...

  2. 我们写一个循环,如: foreach(int id: ids) {execute(SELECT * FROM profile WHERE id='i')}

  3. 据我所知,由于发送DB的请求需要花费大量时间,因此我们应该减少访问DB的次数,因此第一种方法更好。但是,我不确定这个行业是否属实,是否有更好的解决方案。请点赞我,谢谢:)

1 个答案:

答案 0 :(得分:1)

从性能的角度来看,我认为使用WHERE IN (...)的第一个查询是首选的方法。正如您和评论所指出的那样,在PHP循环中调用许多查询会产生很大的开销,因为每次对DB的新调用都会占用网络时间。最重要的是,MySQL可以在内部优化WHERE IN子句。例如,它可以创建IN值的映射,以允许快速查找。在理想情况下,使用WHERE IN进行单个查询可能不会比搜索单个值更糟糕。