我试图向优化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内存然后失败了.其他建议或疑问??? 非常感谢!
你可以用这个:
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