===== CakePHP best practice =====
=== 1. Save large record set ===
If we have to insert **large data**, existed method saveAll() will be slow rather than core query.
public function submitData($data = array()) {
    if (!empty($data)) {
        $queryString = '';
        $queryData = array();
        $i = 0;
			
        foreach ($data as $item) {
	    if (empty($queryString)) {
	        $queryString = "INSERT INTO `tablename` (";
	        $columns = array();
	        $values = array();
	        foreach($item as $key=>$value) {
		    $columns[] = "`$key`";
		    $values[] = !is_numeric($value) ? "'" . Utils::mres($value) . "'" : $value;
	        }
					
	        $queryString .= implode(',', $columns) . ') VALUES ';
	        $queryData[] = '(' . implode(',', $values) . ')';
	    } else {
	        $values = array();
	        foreach($item as $key=>$value) {
		    $values[] = !is_numeric($value) ? "'" . $value . "'" : $value;
	        }
	        $queryData[] = '(' . implode(',', $values) . ')';
	    }
				
	    $i++;
				
	    if ($i == 500) {
	        $queryString .= implode(',', $queryData);
	        $this->query($queryString);
	        $queryString = '';
	        $queryData = array();
	        $i = 0;
	    }
        }
        $queryString .= implode(',', $queryData);
        if (!empty($queryString)) {
	    $this->query($queryString);
        }
    }
}