需求:定時將oracle視圖中數據同步到mysql,再將數據生成sqlite.db進行下發
數據量:800W
常規處理方式:使用分頁查詢oracle中表數據
SQL:
處理慢原因:這個需要從rownum說起,因為rownum是一個偽列,對於返回數據的結果都是從1開始的,即我想查第100到200條記錄,rownum標記會移動到200,數據量越大移動的就越多,這是導致查詢慢的原因
優化方法:
解釋:利用rownum有序自增的編號,將數據按10000條1段分成若干段,取到該段內的最大ID與最小ID進行查詢,其中ID列為索引列。這樣只有在分段查詢時會消耗一點時間,之后再按照區間ID循環同步數據,時間消耗都是一定的,不會出現越查越慢的問題。
由mysql到sqlite分段SQL: