Алгоритм в твоем случае будет таким:
1. Удаление всех индексов из таблицы, куда планируется записывать данные.
2. Открытие файла (fopen).
3. Чтение m строк (fgets) пока не конец файла.
4. Составление запроса в виде одной пачки (batch): INSERT INTO ... VALUES ( %row1%, %row2%, ... , %rowm%);
5. Выполение запроса.
6. Переход к шагу 3.
7. Конец файла, закрытие файла, строим удаленные индексы.
Если шаги 3 и 4 выполнять параллельно, то можно сэкономить на памяти.
По поводу лимита: у тебя сложность алгоритма O(n) - т. е. линейно зависит от кол-ва строк в файле, ускорить (если недостаточно) поможет либо оптимизация (использования низкоуровневых утилит для вставки данных, но данные эти заранее должны быть подготовлены), либо использование более производительного железа (клиента, сети, сервера).