zoukankan      html  css  js  c++  java
  • 数据库sql的in操作,解决in的过多

      一个sql的拼写后,服务器会把这个sql传送到数据库服务器执行,一般不在一个物理机上。那么传送需要走网络,包丢失等网络情况就可能出现。

      一般情况,一个sql的长度不会很大,但是有种这样的情况。in操作时,这些数据来源于外部,不好预估有多少。此时,最好不要贸然把所有字符串都通过这一个sql拼进去。此时这个sql长度很长,就可能发生超过数据库的限制max_allowed_packet,而且sql过长,数据库的效率也不会很高。因此,很容易想到的是,分批执行。把这个数据按等长进行分割。比如一次执行500个。

      简单写个函数,比如这个in数据是个php数组过来的。

    $in_data = array();// in过来的数组
    $row_num = 500;// 每次500个
    $rows = ceil(count($in_data)/$row_num);// 几组
    for($i = 0; $i < $rows; $i++){
        $ids = implode("','", array_splice($in_data, 0, $row_num));
        $ids = "'". $ids. "'";
        // sql exec
    }
  • 相关阅读:
    Java 泛型
    Github
    软件工程----前端
    前端全局缓存的三种方式
    关于IDE的选择
    模拟placeholder
    小程序request封装
    小程序实现大转盘抽奖----踩坑之路
    关于this的理解
    小程序背景图片bug
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5747120.html
Copyright © 2011-2022 走看看