Запросите метод быстрого обновления для записей, содержащих повторяющиеся значения - PullRequest
0 голосов
/ 11 января 2019

У меня есть таблица с миллионами записей, но у каждого объекта может быть несколько столбцов с одинаковыми значениями, в то время как некоторые другие столбцы имеют разные значения.

Пример. Человек имеет один и тот же адрес электронной почты и один и тот же номер мобильного телефона, но имеет разные истории транзакций, что приведет к созданию нескольких записей в таблице.

Я хочу обновить таблицу на основе адреса электронной почты и номера мобильного телефона. Поскольку несколько записей имеют одинаковый адрес электронной почты и номер мобильного телефона, обновленный столбец будет иметь одинаковый результат.

Мой код:

UPDATE person 
SET info = concat (email, mobile);

Но этот код будет иметь полный масштаб таблицы и обновлять записи одну за другой, что очень медленно, поскольку размер таблицы велик.

Интересно, есть ли быстрый способ обновления поля, т. Е. С использованием метода агрегирования?

К вашему сведению, я работаю на верстаке MYSQL 8.0.

1 Ответ

0 голосов
/ 11 января 2019

Это утверждение:

Я хочу обновить таблицу на основе адреса электронной почты и номера мобильного телефона. Поскольку несколько записей имеют один и тот же адрес электронной почты и номер мобильного телефона.

Кажется, у вас ненормализованная таблица

Если вы хотите обновить с тем же адресом электронной почты и тем же номером мобильного телефона. Ваше обновление добавляет несколько одинаковых записей несколько раз, и оно выделяет много места в вашей базе данных с избыточными данными.

Я предлагаю, почему бы вам не создать еще одну таблицу только для этого?

Например:

У вас есть запись

PersoneID1 email1 Mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1

Вместо создания четырех email1 Mobile1

В вашей только что созданной таблице:

это выглядит как одна запись, например:

PersoneID1 email1 Mobile1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...