分頁取數方式java
在 數據倉庫中有一個重要的基礎步驟,就是對數據進行清洗。好比數據源的數據若是以JSON方式存儲,在mysql的數據倉庫就必須將json中須要的字段提 取出來,作成單獨的表字段。這個步驟用sql直接處理很麻煩,因此能夠用主流編程語言(好比java)的json庫進行解析。解析的時候須要讀取數據,一 次性讀取進來是不可能的,因此要分批讀取(至關於分頁了)。mysql
最初的實現方式就是標記住每次取數據的偏移量,而後一批批讀取:sql
這樣的代碼,在開始幾句sql的時候執行速度還行,可是到後面會愈來愈慢,由於每次要讀取大量數據再丟棄,實際上是一種浪費。編程
高效的實現方式,能夠是用表中的主鍵進行分頁。若是數據是按照主鍵排序的,那麼能夠是這樣(這麼作是要求主鍵的取值序列是連續的。假設主鍵的取值序列咱們比較清楚,是從10001-1000000的連續值):json
就算數據不是按主鍵排序的,也能夠經過限制主鍵的範圍來分頁。這樣處理的話,主鍵的取值序列不連續也沒有太大問題,就是每次拿到的數據會比理想中的少一些,反正是用在數據處理,不影響正確性:編程語言
這樣的話,因爲主鍵上面有索引,取數據速度就不會受到數據的具體位置的影響了。spa