Напиши SQL-запрос для выгрузки всех транзакций пользователя из таблицы balance_transactions за определенный период.
Для выгрузки всех транзакций конкретного пользователя из таблицы balance_transactions за определённый период используется стандартный SELECT-запрос с фильтрацией по user_id и диапазону дат через оператор BETWEEN или сравнение >= / = :date_from
AND created_at = ‘2024-01-01 00:00:00’
AND created_at = ‘2024-01-01’
AND created_at < '2024-04-01'
ORDER BY created_at ASC
) TO '/tmp/transactions_user42.csv' WITH CSV HEADER DELIMITER ',';
**Экспорт через MySQL (SELECT INTO OUTFILE):**
sql
SELECT id, user_id, amount, currency, type, status, created_at, description
FROM balance_transactions
WHERE user_id = 42
AND created_at BETWEEN '2024-01-01' AND '2024-03-31 23:59:59'
ORDER BY created_at ASC
INTO OUTFILE '/tmp/transactions_user42.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'n';
**Рекомендации по оптимизации:**
— Убедитесь, что на колонках `user_id` и `created_at` есть составной индекс: `CREATE INDEX idx_bt_user_date ON balance_transactions (user_id, created_at);`
— Используйте `created_at < :date_to` вместо `<=` для корректной работы с временными метками (исключает граничный день следующего периода).
— Если таблица очень большая, добавьте `LIMIT` для тестирования запроса перед полной выгрузкой.
— При экспорте через приложение (Python, Node.js) используйте потоковую выгрузку, чтобы не загружать всё в память сразу.
