当前位置:  开发笔记 > 编程语言 > 正文

需要MySQL INSERT - SELECT查询具有数百万条记录的表

如何解决《需要MySQLINSERT-SELECT查询具有数百万条记录的表》经验,为你挑选了1个好方法。

我试图向优化90GB +表迈出一步:

旧表

桌子每天抓住大约.来自外部源的750,000条记录,并使用新日期将它们添加到表中.根据我的理解,这已经持续了三年.97%的记录从一天到下一天都没有变化.

新表

我试图通过旧表(数以百万计的记录)并消除冗余,这可能会极大地减少表的大小.

OLD_TABLE

日期

RECORD_ID

data_field(真的很多字段,但为了示例)

new_table_index

日期

index_id的

NEW_TABLE

index_id的

RECORD_ID

data_field中

我们遍历old_table中的每条记录时的逻辑

if(record_id不在new_table中)或(record_id在new_table中,但最新的条目有不同的data_field)

将其插入new_table并获取index_id

其他

从new_table_index获取该record_id的最新条目index_id

总是

将index_id和date插入new_table_index

有关最佳方法的任何想法吗?我没有足够先进的MySQL将这一切放在一起.当我尝试用PHP编写脚本时,它耗尽了3GB内存然后失败了.其他建议或疑问??? 非常感谢!



1> sfossen..:

你可以用这个:

new_table
    * date
    * record_id (pk)
    * data_field


INSERT INTO new_table (date,record_id,data_field)
    SELECT date, record_id, data_field FROM old_table
        ON DUPLICATE KEY UPDATE date=old_table.data, data_field=old_table.data_field;

record id是主键,可以在插入下面的old_table中添加相同的插入.

看看mySQL

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有