我需要知道爲什麼在將從ROW_NUMBER窗口函數生成的列轉換爲某種數據類型時性能差異很大的原因。轉換ROW_NUMBER列會影響性能
實施例:
WITH MyCte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) AS rownumber, * FROM (
SELECT DISTINCT * FROM (
SELECT
j.*,
-- Other columns here
FROM Table j
-- Join to other tables here
)
-- Filter records
SELECT *
FROM MyCte
WHERE CONVERT(INT, rownumber) BETWEEN CONVERT(INT, 40000) AND CONVERT(INT, 40010)
如果我轉換rownumber
列第一到INT它將只執行最多3秒,其是理想的。
WHERE CONVERT(INT, rownumber) BETWEEN CONVERT(INT, 40000) AND CONVERT(INT, 40010)`
但是,如果我不轉換,它會花了將近1分鐘,執行查詢。
WHERE rownumber BETWEEN CONVERT(INT, 40000) AND CONVERT(INT, 40010)
任何人都可以給我這是什麼概念?
很好的解釋,我沒有想過,謝謝! – Sherlock