Здравствуйте! Столкнулся с проблемой при работе с большим объемом данных в базе MySQL. Есть таблица с более чем 1 миллионом записей, и запросы на выборку начали сильно тормозить. Я использую PDO в PHP для взаимодействия с базой данных. Пример моего запроса: Код (Text): $query = "SELECT * FROM users WHERE status = :status AND created_at > :date"; $stmt = $pdo->prepare($query); $stmt->execute(['status' => 'active', 'date' => '2023-01-01']); $results = $stmt->fetchAll(); Индексы на status и created_at установлены, но производительность всё равно оставляет желать лучшего. Может быть, я что-то упустил в плане оптимизации? I check this: https://php.ru/forum/threads/gugl-xrom-ne-vidit-versiju-dlja-mobilnyx-ustrojsvaws-devops Также хотел бы узнать, есть ли лучшие практики по работе с такими объемами данных в PHP. Например, стоит ли использовать пагинацию или разделение данных на партии (batch processing)? Буду благодарен за советы или ссылки на полезные материалы! Спасибо!
Определённо Очевидно же, что первое, что нужно предпринять, смена типов данных в этих колонках. На INT Не помешает также и оптимизировать саму таблицу, дефрагментировав её. https://habr.com/ru/articles/41166/
Далее стоит пересмотреть структуру таблицы - хорошей практикой будет перенос всех динамических данных в отдельную таблицу, или, даже, несколько
БД не такие убитые, если `status` ENUM, есть сомнениея, что замена на INT поможет. EXPLAIN сделать конечного запроса, скорее всего на `created_at` индекс не срабатывает, ибо сравнение неточное. Вообще дамп структуры таблицы показать надо хотя бы.