因业务需要,需要统计一个约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秒即完成查询。