mysql关于in大量数据的解决办法 您所在的位置:网站首页 数据库查询大量数据怎么办 mysql关于in大量数据的解决办法

mysql关于in大量数据的解决办法

2024-06-20 20:02| 来源: 网络整理| 查看: 265

*** 注意:该办法适用于没办法使用跨库软连接或者中间件的情况

有些经验的都知道,mysql在in大量数据时会出现不走索引的现象,查了很多资料,解决办法主要是将in改为join,但是实际业务中可能会出现从其他库查过来的大量id,例如A库查到老师下面所有的学生id,B库根据学生id去查询统计做题信息等等。

由于同一个请求中会有很多维度数据需要统计,所以我的办法是在最开始创建一个内存临时表,然后后续的所有相关查询把in改成和该临时表的关联查询。

具体代码如下: laravel上执行

/** * 使用临时表关联 * @param $arr array in的id数组 */ public function tempTableQuery($arr) { DB::select('drop table if exists temp_tb '); DB::select('CREATE TEMPORARY TABLE temp_tb(uid int not null default 0)'); $sql = ''; foreach ($arr as $v){ $sql.='('.$v.'),'; } $sql = rtrim($sql,','); DB::select(sprintf('insert into temp_tb(uid) values %s',$sql)); $res = DB::select('SELECT COUNT(*) AS tp_count FROM temp_tb left join `practice_answer` on practice_answer.uid = temp_tb.uid limit 1'); echo json_encode($res); }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有