【求助】排序分页查询慢,如何优化

【StarRocks版本】3.0.2
【集群规模】例如:3fe+3be(混部)

看过很多order by查询慢的帖子,感觉大家遇到的问题都不太一样。
单表数据量:将近3亿
排序键:start_time、end_time
分区键:start_time 以小时分区
分桶键:flow_id
执行语句:
select * from a order by start_time desc limit 30; (4.8s)
select * from a order by start_time asc limit 30; (4.6s)
select * from a order by flow_id desc limit 30; (478ms)

之前看一个帖子说他的asc比desc快,但是在我这desc和asc都很慢。测试环境的数据导致每个分区的数据量相差较大,少的有几十行数据,多的有几百万行数据。
想求助一下大佬们,这两个字段的order by查询耗时差别比较大的原因是什么?
常规业务都需要排序分页或者查询topn,除了改写sql还有其他优化方式吗?目前最新版本有没有做相关优化?
最后附上建表语句和profile
orderby-flow_id.txt (29.6 KB) orderby-start_time.txt (29.3 KB) 建表语句.txt (1.3 KB)

@jingdan 大佬帮忙看一下 谢谢~

这个是因为当前order by limit 有个优化,对null的字段没法开启,可以把start_time设置为not null

还有一个问题想问一下
不管是单表查询(select * from xxx order by xxx limit 30)还是联表查询(select a.,b. from a left join b on a.id = b.id order vy xxx limit 30),第一次查询都很慢,第二次查询就比较快了。看了两次profile,第一次IOTime比较耗时。是不是可以理解为第一次查询需要将磁盘里面的数据写入到内存所以比较慢,第二次查询就直接使用内存里面的数据?有没有什么优化方式可以使第一次查询就比较快呢?

这个优化下schema,把想做order by的column改成 非nullable的