推荐方案 A — CSV 游标流式导出核心思路不一次性加载MySQL 游标分批取 → 写一行 → flush → 释放 → 下一批。while (true) { SELECT ... WHERE id $lastId LIMIT 5000; ← 只取 5000 行 │ foreach → fputcsv($fp) ← 逐行写文件指针 │ ob_flush() / flush() ← 推到浏览器 │ $lastId 最大 id; unset($batch); ← 释放内存 }内存仅当前批次 5000 行 ≈ 15-30MB与总行数无关。耗时MySQL 扫描 PHP 写 CSV359 万行预计 3-8 分钟。瓶颈在customer_user LEFT JOIN customer取决于两表id是否主键/索引主键 JOIN 很快。浏览器体验CSV 流式输出浏览器会持续接收数据直到完成不会超时只要set_time_limit(0) 持续 flush。