需求
Mysql 表中存在几千万到几亿的数据(不存在自增主键),需要对表中数据进行遍历。
使用的是 pymysql
模块。
方案 1
使用 limit
来分块返回数据。
劣势:使用 limit
每次都需要从头扫描数据表,在数据量超过 1000w 时,性能较低。
LIMIT = 5000
def get_name(sql_client, table_name):
i = 0
while True:
sql.ping()
cur = sql.cursor()
sql_cmd = 'select did from {} limit {}, {}'.format(table_name, i * LIMIT, LIMIT)
rt = cur.execute(sql_cmd)
rt_list = cur.fetchall()
cur.close()