我们使用SELECT * FROM profile WHERE id IN (1,2,3...)
获取ResultSet中的所有结果。它基本上是SELECT * FROM profile WHERE id='1' OR id='2' OR id='3'...
我们写一个循环,如:
foreach(int id: ids) {execute(SELECT * FROM profile WHERE id='i')}
据我所知,由于发送DB的请求需要花费大量时间,因此我们应该减少访问DB的次数,因此第一种方法更好。但是,我不确定这个行业是否属实,是否有更好的解决方案。请点赞我,谢谢:)
答案 0 :(得分:1)
从性能的角度来看,我认为使用WHERE IN (...)
的第一个查询是首选的方法。正如您和评论所指出的那样,在PHP循环中调用许多查询会产生很大的开销,因为每次对DB的新调用都会占用网络时间。最重要的是,MySQL可以在内部优化WHERE IN
子句。例如,它可以创建IN
值的映射,以允许快速查找。在理想情况下,使用WHERE IN
进行单个查询可能不会比搜索单个值更糟糕。