为什么将 "IN" 与 "OPERATOR <" 结合使用会比单独使用 "IN" 子句带来更好的结果?
我有一个包含数百万条记录的移动表,当我单独使用“IN”子句运行查询时需要几分钟才能完成。但是当我添加“AND Product_ID < 400000”时只需要几秒钟
谁能解释我为什么会发生这种情况?
(Product_ID有索引,最大Id号小于390000)
慢代码:
SELECT
Product_ID,
Product_Name,
Product_Cost
FROM Products
WHERE Product_ID IN (1,10,100,1000)
UNION
SELECT
Product_ID,
Product_Name,
Product_Cost
FROM Products_Hist
WHERE Product_ID IN (1,10,100,1000)
快速代码:
SELECT
Product_ID,
Product_Name,
Product_Cost
FROM Products
WHERE Product_ID IN (1,10,100,1000)
AND Product_ID < 400000
UNION
SELECT
Product_ID,
Product_Name,
Product_Cost
FROM Products_Hist
WHERE Product_ID IN (1,10,100,1000)
AND Product_ID < 400000