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