[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql - пропадают записи
tranger
Всем привет. Имеется MariaDB 10.4, PHP 7.3.
В MariaDB создаю новую БД и таблицу с названием test. В таблице всего два поля id и name (id - первичный ключ и AUTO_INCREMENT).
Заполняю таблицу 130 тысячами записей:
INSERT INTO table_name (...) VALUES (...),(...),(...)... (такая конструкция позволяет добавлять 10к записей за 1 секунду)
Делаю SELECT и с помощью mysqli_fetch_array вывожу 130 тысяч записей.
Пока всё нормально.
Теперь делаем SELECT (*) FROM `test`;
Получаем цифру 130к
Тоже вроде никаких проблем
А вот теперь сделаем ещё раз SELECT и выведем записи. Мы получим не 130к записей, а, например, 117к записей. Если очистить таблицу и ещё раз проделать всё то же самое, то получим 125к записей (каждый раз после очистки таблицы разное занчение)
Пробуем ещё раз сделать SELECT (*) FROM `test`;
Показывает 130к записей, но php выводит всего 125к.
Ради интереса делаем такой запрос SELECT (*) FROM `test` WHERE `id` = '129999';
Результат будет положительным, мы получим эту строку.

ВОПРОС: Почему после запроса SELECT (*) FROM `test`; перестают выводиться записи?
Пробовал на другом сервере с mariadb 10.3 и php 5.6. Такой проблемы нет.
Kusss
каким образом считаете количество строк ?
Попробуйте mysql_fetch_assoc вместо mysqli_fetch_array, оно потребляет намного меньше памяти.
Kusss
$sql = "
SELECT
SQL_CALC_FOUND_ROWS
*
FROM
`test`
"
;
$sql = mysql_querty($sql) or die( mysql_error() );
$number = mysql_num_rows($sql);
if ($number > 0) {

echo 'Затронуто строк - '. $number;
/*
$i = 1;
while ($value = mysql_fetch_assoc($sql)){
echo '<br>'. i++ ;
}
*/



}
$sql = "
SELECT
FOUND_ROWS() AS count
"
;
$all = mysql_fetch_assoc( $all );
$all = mysql_query( $all );
echo '<br>Всего строк '. $all['count'];
SorokinFilipp265
Цитата (tranger @ 26.07.2019 - 17:44)
Теперь делаем SELECT (*) FROM `test`;

а для чего круглые скобки?
tranger
Цитата (SorokinFilipp265 @ 27.07.2019 - 00:10)
Цитата (tranger @ 26.07.2019 - 17:44)
Теперь делаем SELECT (*) FROM `test`;

а для чего круглые скобки?

опечатка
tranger
Это не задача, а просто научный интерес. Естественно, что все 130к записей никуда не будут выводиться, а в таблице будут ещё поля и будет выборка по какому-нибудь полю. Но почему на одном сервере нет такой проблемы, а на другом есть. Явно этому есть объяснение...
tranger
Цитата (Kusss @ 26.07.2019 - 18:15)
каким образом считаете количество строк ?
Попробуйте mysql_fetch_assoc вместо mysqli_fetch_array, оно потребляет намного меньше памяти.

mysqli_fetch_array
SorokinFilipp265
Тип таблиц myisam ?
tranger
InnoDB
tranger
Самое интересное, что запрос SELECT * FROM `test` WHERE `id` LIKE '%%'; отдаёт все записи, а SELECT * FROM `test`; не отдаёт все
SorokinFilipp265
попробуйте изменить тип таблиц на myisam
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.