分页取数方式java
在 数据仓库中有一个重要的基础步骤,就是对数据进行清洗。好比数据源的数据若是以JSON方式存储,在mysql的数据仓库就必须将json中须要的字段提 取出来,作成单独的表字段。这个步骤用sql直接处理很麻烦,因此能够用主流编程语言(好比java)的json库进行解析。解析的时候须要读取数据,一 次性读取进来是不可能的,因此要分批读取(至关于分页了)。mysql
最初的实现方式就是标记住每次取数据的偏移量,而后一批批读取:sql
这样的代码,在开始几句sql的时候执行速度还行,可是到后面会愈来愈慢,由于每次要读取大量数据再丢弃,实际上是一种浪费。编程
高效的实现方式,能够是用表中的主键进行分页。若是数据是按照主键排序的,那么能够是这样(这么作是要求主键的取值序列是连续的。假设主键的取值序列咱们比较清楚,是从10001-1000000的连续值):json
就算数据不是按主键排序的,也能够经过限制主键的范围来分页。这样处理的话,主键的取值序列不连续也没有太大问题,就是每次拿到的数据会比理想中的少一些,反正是用在数据处理,不影响正确性:编程语言
这样的话,因为主键上面有索引,取数据速度就不会受到数据的具体位置的影响了。spa