「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