@seowin555

Как сделать быструю выборку и создать новую базу sql?

Имеется база данных размером 10 млн. строк под управлением mySQL.
Необходимо на основании текущей базы создать новую базу размером от 500 тыс. до 1 млн. (рандомное значение в этом интервале) строк с рандомными строками первичной базы.

Структура первичной базы:
1. Id
2. Varchar(500)

Во втором столбце содержится текст.

Структура новой базы:
1. Id
2. Varchar(500)
3. Varchar(500)
Первых два столбца идентичны столбцам из первичной базы. В третьем столбце содержится строка из второго столбца в транслите.

Т.е. например, во втором столбце содержится текст: "купить пластиковые окна", то в третий столбец попадет значение: "kupit-plastikovie-okna" после обработкой скрипта.

Каким образом можно максимально быстро реализовать подобное, при этом не положив сервер?

Задача - именно максимально быстро ускорить данный процесс.

Заранее спасибо за советы.
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
То что вы описали в теле вопроса никак не соотносится с тем что вы написали в заголовке.
У вас есть таблица в 2 поля , а вам нужна таблица в 3 поля. Какие есть варианты -
1) Добавить колонку туда где есть
ALTER TABLE table1 add column translit varchar(500) null
UPDATE TABLE table1
set translit = transliterate(text)
WHERE some condition
Ваша задача - написать скалярную функцию транслитерирующую текст в.
2) Создать новую таблицу.
CREATE TABLE table2 (id,text,translit)
INSERT INTO table2
SELECT id,text,transliterate(text)
FROM table1
WHERE some condition.
3)Создать новую таблицу и на знакомом серверном языке потихоньку вытаскивать блок данных(скажем по 5000 строк без лока таблицы) траслитерировать нужное поле и сделать insert в новую табличку.

Любое решение займет время, база "упасть" не должна но притормозить может. Если вам не к спеху - я бы выбрал третий метод. Можно более плавно заниматься подобным и брать данные без блокировки таблицы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы