CleverCode發現在mysql有分頁丟失數據的問題。如下面的代碼,system_user表有400萬行數據,這時候需要把這張表裡面的所有的userid取出來。這時候只能分頁取,一次取2萬。
//系統用戶表(400萬行的數據) $systemUserTable = new systemUserTable(); // 每次取20000 $pageSize = 20000; for($curPage = 1;; $curPage++) { $sql = "select userid from system_user order by userid asc limit " . (($curPage - 1) * $pageSize) . "," . $pageSize; //取數據 $rows = $systemUserTable->fetchAll($sql); // 沒有數據了,結束 if (empty($rows)) { break; } // 遍歷數據 foreach ( $rows as $key => $val ) { $userid = $val['userid']; echo $userid."\r\n"; } }
7)u6,u7被丟失了。
$systemUserTable = new systemUserTable(); // 每次取20000 $pageSize = 20000; // 每頁最大編號 $pageMaxId = 0; while ( 1 ) { $sql = "select userid from system_user where userid > ${pageMaxId} order by userid asc limit " . $pageSize; //取數據 $rows = $fyHouse->fetchAll($sql); // 沒有數據,結束 if (empty($rows)) { break; } // 遍歷數據 foreach ( $rows as $key => $val ) { $userid = $val['userid']; // 記錄當前最大分頁編號 if ($userid > $pageMaxId) { $pageMaxId = $userid; } echo $userid."\r\n"; } }