2016-07-01 15 views
0

私は特定の$range$intervalの走行距離を持つ車両をつかみようとしています。現在、膨大な数のbetween ? and ?句があり、クエリを大幅に遅くしています。これを達成するより良い方法はありますか? $rangeはそれをもっと難しくしますが、モジュロ演算が機能するかもしれないと私は考えています。多くの「最適化」? where句

$interval = 15000; 
$range = 5000; 
$max = 3000000; 

for ($i = $interval; $i < $max; $i += $interval) 
{ 
    $between = [ 
     $i - $range, 
     $i + $range, 
    ]; 

    // generates "WHERE mileage BETWEEN ? AND ? OR mileage BETWEEN ? AND ? ..." 
    $query->orWhereBetween('mileage', $between); 
} 

答えて

3
select .. where (mileage>=15000) and ((mileage-10000) mod 15000)<=10000 
+0

'-10000'で何次第ですか? – Shane

+1

@Shane最小/最大の範囲、つまり$範囲* 2 – Wizard

関連する問題