В свете Вышесказанного, если не менять логику и Вам необходимо получить все строки например, для вывода в CSV или Excel, сделать приблизительно следующее:
//set_time_limit(120); // может понадобиться увеличить время выполнения
$db_host = 'localhost';
$db_user = 'root';
$db_password = '';
$db_name = 'price_sites';
$linkps = mysqli_connect($db_host, $db_user, $db_password, $db_name);
$limit = 1000;
$offset = 0;
// выполняем запрос с подсчетом общего числа результатов
$query = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM table1 LEFT JOIN table2 USING(item) LIMIT %d,%d", $offset,$limit);
$result = mysqli_query($linkps, $query);
// получаем общее число результатов
$resultTotal = mysqli_query($linkps, "SELECT FOUND_ROWS() AS total");
$res = mysqli_fetch_assoc($resultTotal);
$numrows = $res['total'];
// идем в цикле по результатам
for ($offset = 0; $offset <= $numrows ; $offset += $limit) {
// получаем строки из результата
while ($row = mysqli_fetch_assoc($result)) {
// Что-нибудь делаем с полученной строкой
print_r($row);
}
//запрашиваем очередную порцию данных
$query = sprintf("SELECT * FROM table1 LEFT JOIN table2 USING(item) LIMIT %d,%d", $offset,$limit);
$result = mysqli_query($linkps, $query);
}
Сразу говорю, что код может не заработать, ибо писал на память.