Мне нужно сгенерировать большое количество строк в одной таблице, к сожалению, один столбец необходимо создать на стороне приложения (PHP).Как эффективно генерировать большое количество строк
Так по существу Мне нужно создать что-то вроде этого:
id | encoded_val_based_on_id
-------------------------------
1 | my_encode_func(1)
-------------------------------
2 | my_encode_func(2)
-------------------------------
3 | my_encode_func(3)
-------------------------------
4 | my_encode_func(4)
я предполагаю, что должен быть лучший способ затем генерировать N
запросы, чтобы получить N
идентификаторы, а затем обновить эти записи обратно с «encoded_val_based_on_id».
Кроме того, я хотел бы сохранить уникальный индекс на «encoded_val_based_on_id», который я не смог бы выполнить, поскольку я бы создал пустые строки, а затем заполнил их.
Я мог бы заблокировать таблицу, получить последний идентификатор, сгенерировать идентификаторы, увеличив в своем приложении + создание всех других вещей, вставить их и разблокировать таблицу. Я не думаю, что это правильный путь, но, по крайней мере, это можно сделать всего за 1 запрос (пакетная вставка), и я могу сохранить там уникальный индекс.
Сгенерируйте его в текстовый файл, затем используйте 'LOAD DATA INFILE' с отключенными индексами. – zerkms
Чтобы быть уверенным, что написать 'my_encode_func()' снова, поскольку хранимая функция MySQL не является вариантом ...? –
@LukasEder На самом деле это было первое, что я пытался сделать, но для этой функции существует сложная логика, и MySQL немного ограничен с точки зрения того, что вы можете делать с пользовательскими функциями - просто SQL или C, и я не думаю что переписывание сложного алгоритма с PHP на C является единственным способом. –