我试图向优化90GB +表迈出一步:
旧表
桌子每天抓住大约.来自外部源的750,000条记录,并使用新日期将它们添加到表中.根据我的理解,这已经持续了三年.97%的记录从一天到下一天都没有变化.
新表
我试图通过旧表(数以百万计的记录)并消除冗余,这可能会极大地减少表的大小.
OLD_TABLE
new_table_index
NEW_TABLE
我们遍历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;
Run Code Online (Sandbox Code Playgroud)
record id是主键,可以在插入下面的old_table中添加相同的插入.
看看mySQL