文章内容

2020/9/10 15:41:31,作 者: 黄兵

MySQL查询大量数据所面临的一些问题

最近需要将历史数据保存到其他表,也就是俗称的分表,但是光是一年的数据就有1000w左右,查询出来用了10多分钟,之后开始遍历字段,遍历每个字段都需要非常长的时间,具体代码如下:

get_all = cur.fetchall()
for item in get_all:
    sms_receive_id = item[0]
    phone_number = item[1]
    content = item[2]
    receive_time = item[3]
    is_type = item[4]
    show = item[5]
    phone_number_id = item[6]

查询出来的结果数据,如下图所示:

总共有1080万条数据,看看遍历用了多少内存:

平常最多使用到40%的内存,现在已经使用了75%的内存,也就是16G的内存,光这个查询使用了16*(75%-45%)=5.6G的内存,这只是在本地,如果在远程服务器,这个花费就不菲,必定6G内存的服务器可不便宜。

这里只是给大家展示大量数据查询所带来的问题,不仅耗时,同时对计算机资源也是一个非常大的消耗。

用分页可以避免这个问题,在MySQL查询大量数据分页文章中我们来详细讨论大型查询如何做分页查询。


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - MySQL查询大量数据所面临的一些问题

MySQL查询时间
MySQLdb cursor closed
分享到:

发表评论

评论列表

user-ico

a1sd on 回复 有用(0

继续加油啊博主!相信自己