sql - Converting ROW_NUMBER column affects performance -
i need know reason behind why there big performance difference when converting column generated row_number window function data type.
example :
with mycte ( select row_number() on (order id asc) rownumber, * ( select distinct * ( select j.*, -- other columns here table j -- join other tables here ) -- filter records select * mycte convert(int, rownumber) between convert(int, 40000) , convert(int, 40010)
if convert rownumber
column first int execute 3 secs ideal.
where convert(int, rownumber) between convert(int, 40000) , convert(int, 40010)`
but if not convert it, took 1 minute execute query.
where rownumber between convert(int, 40000) , convert(int, 40010)
can me concept behind this?
row_number()
function returns value of bigint
datatype , constant 40000
returns int
.
because of difference in datatypes (yes, int
, bigint
) sql-server can't estimate carnality , choose not optimal execution plan.
you should see on actual execution plan.
Comments
Post a Comment