【发布时间】:2012-09-28 23:22:21
【问题描述】:
您好,我有一个巨大的非规范化 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 亚马逊服务器上。
谢谢!
【问题讨论】:
-
在如此庞大的数据集上选择 distinct 需要很长时间
标签: mysql database database-design database-schema