Minha consulta está muito demorada, alguém tem alguma ideia de como melhorar, creio que o segundo select está piorando o processo, rsrsrs...
$consumption = $this->reading
->selectRaw('apartments.condominium_id,
condominiums.name,
apartments.number,
apartments.block,
readings.reading as reading,
readings.reading/1000 as reading_m3,
DATE_FORMAT(readings.readed_at, "%d/%m/%Y") as date,
DATE_FORMAT(readings.readed_at, "%H:%i") as hour,
IFNULL(readings.reading/1000 -
(select rd.reading/1000 from readings rd where rd.id < readings.id and rd.meter_id = readings.meter_id
order by rd.readed_at desc limit 0,1),0) as consumption,
readings.readed_at as readed_at,
readings.meter_leak,
readings.meter_wire_cut,
readings.meter_id,
meters.meter_number,
meters.transmitter_number,
meter_types.type')
->join('meters', 'readings.meter_id', '=', 'meters.id')
->join('meter_types', 'meters.meter_type_id', 'meter_types.id')
->join('apartments', 'meters.apartment_id', '=', 'apartments.id')
->join('condominiums', 'condominiums.id', '=', 'apartments.condominium_id')
->where('condominiums.id', '=', $id)
->whereBetween('readings.readed_at', [$dateStart, $dateEnd])
->orderBy('meters.meter_number', 'asc')
->orderBy('readings.readed_at', 'asc')
->get();