Hot For Coding
MySQL中遍历多次查询与单次查询全部的效率

有这样一个需求:要查询id从1到100的数据,有两种解决方式

遍历100次,每次查询单条数据

<?php
// Nicholas Lee www.qttc.net
for($i=1;$i<=100;$i++){
  $id = $i;
  $sql = 'SELECT * FROM tab id='.$id;
  // ...查询数据
}
?>

一次查询100条信息

<?php
// Nicholas Lee www.qttc.net
$sql = 'SELECT * FROM tab id>=1 AND id<=100';
// ... 查询数据
?>

以上两种查询都能查询到100条信息,但推荐使用第二种方式。因为尽量少链接数据库是提升Web优化方案的首要条件,其次遍历查询可能会导致瞬间并发请求过多而导致各种状况出现。虽然一次查询N条会有点慢,耗点资源,但相比多次连接MySQL,然后解析查询语句,从库中查询返回结果等等来说,一次查询全部有绝对优势。

当然,也有这样的需求,id从1到100,排除8,像这样的业务场景也可以用以上的语句一下全查出来,再PHP层再过滤掉。但假如要排除的ID比较多,就可以用IN的关键字,总之还是要看业务场景去优化

TITLE: MySQL中遍历多次查询与单次查询全部的效率

LINK: https://www.qttc.net/108_mysql_batch_vs_one_by_one_query.html

NOTE: 转载内容请注明出处