我有一张表,亿级,字段有20个左右。数据里面一个ID会有多种类型,每个类型都有对应多个的时间。使用过程中除了全表数据都在使用外,还有一些特殊情况需要取每个ID中每个类型的第一次出现情况。我是用的row_number()over(partition by id,类型 order by create_time) As rn生成一个序号,再根据序号去实现功能。
加上row_number后性能就很差,请问有什么好的解决办法?
谢谢!
我有一张表,亿级,字段有20个左右。数据里面一个ID会有多种类型,每个类型都有对应多个的时间。使用过程中除了全表数据都在使用外,还有一些特殊情况需要取每个ID中每个类型的第一次出现情况。我是用的row_number()over(partition by id,类型 order by create_time) As rn生成一个序号,再根据序号去实现功能。
加上row_number后性能就很差,请问有什么好的解决办法?
谢谢!
对于你这个取每个ID中每个类型的第一次出现情况需求,基本都是需要有一次排序的,
你看能不能在取特殊ID的时候你看能不能过滤一些数据,
比如你的特殊ID都在某个时间之后那就可以过滤时间,或者在都在某些特定的分区里面那就过滤出需要的分区