oracle分页时排序问题

最近在做项目的时候发现了一个bug,mybatis+oracle分页的时候,第一页出现的数据在第二页又出现了,让我很是费解,但是又没有发现什么问题。于是我百度了下oracle 分页排序数据重复,这个博客的有很详细的分析,大体是由于oracle是根据rownum排序的,但是如果排序的字段不是唯一键,比如一群人按照性别排序,那么同一性别的每个人的rownum每次都是随机的。所以出现了在第一页出现的数据在第二页又出现的问题。

那么这个问题如何解决呢?其实有一个简单的办法解决,就是在排序的后面再加一个唯一键排序,比如主键id。这样的解决办法虽然效率会慢一点,但是也还可以接受的。