mysql in 查询优化

2014年11月29日21:01:01

场景:有的时候查询数据库的select in 语句中会有非常多不连续的数值,会很影响查询效率

方法:将select in 查询转换成多个select between and 语句

代码:核心代码(id要排过顺序)

 1     public function group()
 2     {
 3         // $a = array(1,2,3,5,7,8,9);
 4         $a = array(1,3,4,5,7,8,9);
 5         $len = count($a);
 6         $cur = 0; //当前遍历元素的下标
 7         $pre = $a[0]; //前一个元素的值
 8 
 9         $new = array(‘0‘ => array($a[0]));
10         for ($i = 1; $i < $len; $i++) {
11             if (($a[$i] - $pre) == 1 ) {
12                 $new[$cur][] = $a[$i];
13             } else {
14                 $cur = $i;
15                 $new[$cur][] = $a[$i];
16             }
17             $pre = $a[$i];
18         }
19 
20         print_r($new);
21     }

//结果

 1 Array
 2 (
 3     [0] => Array
 4         (
 5             [0] => 1
 6         )
 7 
 8     [1] => Array
 9         (
10             [0] => 3
11             [1] => 4
12             [2] => 5
13         )
14 
15     [4] => Array
16         (
17             [0] => 7
18             [1] => 8
19             [2] => 9
20         )
21 
22 )

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。