求一个大数据排序的解决办法!!!
我现在是想解决sqlserver字符排序的问题,“编号”列是字符类型,变准的话就是数字,按照数字类型排序,问题是有的时候还会出现-或者.的字符,所以不能把类型改成int,那样也就不会出现今天这个问题。
如果单纯的order by排序,下面是sql语句,索引和分页都有。
select * from (select top 200 row_number() over(order by "编号") as rowid,* from TEST) as t where rowid > 100
100~200百万的数据都挺快的。
但这样排序不是正确的,它是会1、10、11、2、3、。。。这样排,因为是字符型,
所以我用了函数order by right(REPLICATE('0',10) + cast("编号" AS varchar(10)),10) 这样排序,结果是正确了。
可是数据量大起来速度就不行了,
有没有大神能帮我解决一下这个问题,我相信肯定会有遇到过类似的问题吧,你们都是怎么解决的?
有什么更好的方案呢?