order by需要加載所有數據到reduce中排序,排序方法可能是冒泡、快排、歸并,無論如何都要加載所有數據order by limit創建一個大小為limit的緩存數組,采用插入法進行排序,把每行數與數組內的數比較,大的話就插入,每插入一個數都有一個數被擠出去,保證每次比較的次數都只有limit次,因此嚴格模式允許order by limit,雖然比較的數多,但是每次比較的資源消耗很少。
sort by局部排序,最終生成的每個文件都有序但不能保證全局有序sort by limit 相當于sort by+order by limit,先局部排序取TopN,然后讀入多個TopN結果再全局排序取TopN。