优化许多“BETWEEN”?然后呢?“where子句


Optimizing many "BETWEEN ? AND ?" where clauses

我试图抓住在某个$range$interval范围内的里程的车辆。目前,有大量的between ? and ?子句极大地减慢了查询速度。有没有更好的方法来实现这一点?我认为模操作可能会起作用,尽管$range使其更加困难。

$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);
}
select .. where (mileage>=15000) and ((mileage-10000) mod 15000)<=10000