0
我有一个查询,用于检查vehicles
的库存,这些库存在一周内没有看到,但未在sold_vehicles
表中列出。将> =更改为<=会导致查询超出执行时间限制
如果我运行此查询:
SELECT all_vehicles.Vin
FROM all_vehicles
LEFT JOIN sold_vehicles
ON all_vehicles.Vin = sold_vehicles.Vin
WHERE
sold_vehicles.id IS NULL AND
all_vehicles.last_seen >= 1502672069
ORDER BY all_vehicles.id ASC
LIMIT 1000
,一切工作正常。
但是,如果我将>=
转换为<=
,它将超过120秒的执行时间限制。为什么要扭转这种表现呢?任何其他的原因,除了很多结果返回,并不会限制修复?
需要明确的是,这几乎是完全相同的查询,但<=
和LIMIT 10
但无法执行:
SELECT all_vehicles.Vin
FROM all_vehicles
LEFT JOIN sold_vehicles
ON all_vehicles.Vin = sold_vehicles.Vin
WHERE
sold_vehicles.id IS NULL AND
all_vehicles.last_seen <= 1502672069
ORDER BY all_vehicles.id ASC
LIMIT 10
任何想法?是单独发现的结果量?除了LIMIT
以外,我该如何解决?
可能是没有记录匹配,所以查询仍然扫描整个表。 – Matt
检查你的指数范围。检查'EXPLAIN'。 – tadman