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

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

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

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

一次查询100条信息

<?php
// 琼台博客 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: 原创内容,转载请注明出自琼台博客