由于业务需要,需要使用between and 查询数据,
在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,则使用全表扫描了。速度极慢。
解决办法(联合索引+强制使用索引)
EXPLAIN
SELECT DISTINCT
vrd.vehicle_id,
DATE_FORMAT( vrd.start_time, '%Y-%m-%d' ),
bv.license_plate_number
FROM
vehicle_runing_duration vrd
FORCE INDEX ( index_time_id ) #强制使用索引
LEFT JOIN basic_vehicle bv ON vrd.vehicle_id = bv.id
WHERE
vrd.start_time BETWEEN "2022-08-01 00:00:00"
AND "2022-09-03 00:00:00"
ORDER BY
bv.license_plate_number