为什么Python调用Pymysql执行sql查询语句比数据库中慢得很多很多?

1、问题:简单查询数据库用户表中的用户ID,用户表比较大,有一千多万条记录,用Mysql查询select uid as 用户ID from ucenter.usr_user 即可解决,但是用Python调用Pymysql链接数据库查询的时候非常慢,等了十分钟也没解决,但是加上限制查询条数select uid as 用户ID from ucenter.usr_user limit 100很快就能得到结果,具体原因是什么呢?

# 打开数据库连接(ip/数据库用户名/登录密码/数据库名)
db = pymysql.connect(host = "", user = "", passwd = "",\
                     db = "", port = )
#使用cursor()方法获取操作游标
cursor = db.cursor()

sql = '''
    select uid as 用户ID
    from ucenter.usr_user
    '''
#使用execute方法执行SQL语句
cursor.execute(sql)
# 使用 fetchone() 方法获取一条数据
data=cursor.fetchall()
# 关闭数据库连接
db.close()

3个回答

数据量的问题,这么大的数据量最好还是限制一下查询条件

weixin_45507894
weixin_45507894 限制了就得不到完整的数据了,mysql不用就可以啊,这个问题能解决吗?
大约一年之前 回复

不是在本机还涉及到数据传输的问题吧

mysql命令里面默认会限制条目数,所以快。不是python调用导致的慢,是你数据量太大。

你确实需要一次性取所有的uid出来?

xdshust
溪水人家 回复weixin_45507894: 这种需求有点奇怪,首先建议你根据你的业务需求重新思考这个方法,取全量uid是没啥道理的。如果你确实需要,考虑加缓存服务器吧,如redis,应该会快很多。根据业务需求,周期性将所有uids放入redis
12 个月之前 回复
weixin_45507894
weixin_45507894 是的,mysql会限制500,想一次性取出来才好做下一步
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐