MYSQL數據庫 LIMIT限定特定行數


最近在運行Informatica全量抽取時候,系統報了很多莫名的錯誤,日志也沒有顯示警告信息。按有限的日志信息查詢,可能的原因一般是磁盤空間不夠,內存不夠,或者是數據量量太大,緩存爆了。

經排查,是加載的數據量過大,導致了數據加載的失敗。

只好通過限制每次的加載數量,分批多次進行跑數據了。

業務系統使用的是Mysql數據庫,因此在ODS層抽數時候,使用LIMIT語句限制數量。

LIMIT后面可以跟一個或者兩個整數常量,如果跟兩個整數的話,第一個整數用於指定第一個返回結果的偏移量,第二整數用於指定返回結果的條目數。但值得注意的是第一個結果的偏移量是0(而不是1),所以如果您只關心結果的第一個,那么可用如下語句實現。

select * from table limit 0,1;  

如果LIMIT只跟着一個整數n的話,表示只搜索前n個記錄。所以limit n 等價於 limit 0,n。

如果是兩個整數,類推。

select * from table limit 7,-1; //搜索記錄行 8到最后一行  
select * from table limit 7; //搜索前7行記錄  
select * from table limit 0,7; //跟上一條命令等價,搜索前7行記錄

因此最后決定通過用Bluk方式,一次加載500w

select * from table limit 0,5000000; //搜索記錄行 1-5000000
select * from table limit 5000000,10000000; //搜索記錄行 5000001-10000000
...... 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM