嗨,我有一个巨大的非规范化 mysql 数据库,其中包含(约 1 亿)个 url(约 20% 重复)分为相同的拆分表,每个表有 1300 万行。
我想将 url 移动到同一 mySql 服务器上的规范化数据库中。
旧的数据库表未规范化,并且 url 没有索引它看起来像这样:
entry{id,data,data2, data3, data4, possition,rang,url}
我要把它分成多张桌子。
url{id,url}
data{id,data}
data1{id,data}
etc
我做的第一件事是
INSERT IGNORE INTO newDatabase.url (url)
SELECT DISTINCT unNormalised.url FROM oldDatabase.unNormalised
但是“SELECT DISTINCT unNormalised.url”(1300 万行)需要很长时间,我认为既然“INSERT IGNORE INTO”也进行了比较,那么只需执行
INSERT IGNORE INTO newDatabase.url (url)
SELECT unNormalised.url FROM oldDatabase.unNormalised
如果没有 DISTINCT,这个假设是错误的吗?
无论如何它仍然需要永远,我需要一些帮助,有没有更好的方法来处理如此大量的非标准化数据?如果我在整个 1 亿行数据库上执行 SELECT DISTINCT unNormalised.url" 并导出所有 id,然后使用 php 脚本仅将这些 id 移动到新数据库中,那会更好吗?
欢迎所有想法,我不知道如何在不花一年时间的情况下移植所有这些日期!
ps 它托管在 rds 亚马逊服务器上。
谢谢!