因业务需要,需要统计一个约40万条文本记录的数据,是否在另一张180万条记录表中出现过。
直接在mysql数据库中进行联表查询,600秒后,提示超时。
使用select语句,在180万条记录中查询一条数据是否存在,用时约0.08秒。粗略估算,如果将40万条记录查询一遍,大概需要8个多小时。
经写程序实测,从早上10:49算到第二天凌晨02:31,将近15个小时。
又将180条记录存为文本文件,使用程序循环调用grep工具,将40万条记录逐条记录进行查找,从20:57算到第二天14:00,耗时17小时。
在以上数据库或文本文件里,数据都是排好序的,但查找过程仍然十分慢。
于是想到了使用redis工具。先将180万条数据录入redis数据库,再写程序,调用redis的查询接口,逐条查询40万条数据。经测试,仅耗时1分钟20秒即完成查询。
业务需统计约40万条文本记录是否在180万条记录表中出现。在MySQL中联表查询超时,用select语句查询耗时久,实测近15小时;用grep工具在文本文件中查找耗时17小时。而使用Redis工具,将180万条数据录入后查询,仅耗时1分20秒。
943

被折叠的 条评论
为什么被折叠?



