我有一个包含数百万条记录的表,但是每个对象可以有多个共享相同值的列,而其他一些列则具有不同的值。
示例:一个人具有相同的电子邮件地址和相同的手机号码,但是具有不同的交易历史记录,这将在表中生成多个记录。
我想根据电子邮件地址和手机号码更新表格。由于多个记录具有相同的电子邮件地址和手机号码,因此更新的列将得到相同的结果。
我的代码:
UPDATE person
SET info = concat (email, mobile);
但是此代码将具有完整的表比例,并逐个更新记录,这非常慢,因为表很大。
我想知道是否有一种快速的方法来更新字段,即使用聚合方法?
仅供参考,我在MYSQL 8.0工作台上工作。
答案 0 :(得分:0)
此声明:
我想根据电子邮件地址和手机号码更新表格。由于多个记录具有相同的电子邮件地址和手机号码。
似乎您有未标准化的表
如果要使用相同的电子邮件和相同的手机号码进行更新。您的更新会反复添加一堆相同的记录,并为数据库中的冗余数据分配大量空间。
我建议您为什么不为此创建另一个表?
例如:
您有一个记录
PersoneID1 email1 Mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1
代替创建四个email1 Mobile1
在新创建的表中:
它看起来就像只有一条记录一样:
PersoneID1 email1 Mobile1