python循环次数查询_大数据量Mysql查询后经过循环使用python分片

1 问题描述:

(1)使用mysql查询基础数据,这里只有三四个基础的查询条件,联了一个表,同时有limit分页了;

(2)之后经过一系列逻辑处理,在这些处理中又包含了很多sql查询,而且是在第(1)条查询出来的结果基础上查询,以前是先分页的,第(1)一次只查询了十条,第二步最多循环十次,但是现在的新逻辑是,查询出来后,经过(2)的处理,不满足筛选条件的数据remove掉,然后再返回最后剩下的数据

(3)由于每一页都会remove()掉部分数据,我曾经尝试定义全局变量,记录删除数据,但是只能得到我当前查询这一页删除了多少,无法获取总共删除了多少,而且每一页的数量都不一定是10条,一般来说是10条以下(因为会删除部分不符合筛选条件的数据),但是要求是要获取满足筛选条件的总数据量,而且需要正常分页

(4)于是我不用limit分页,直接取全量数据,然后再记录删除的数据量,使用切片手动分页,就能获取总数据了,每页也都是10条,但是循环次数过多,数据量稍微大一点儿,就需要49秒左右

2 部分相关代码:

(1)基础查询:

SELECT

op.order_id,

opc.order_code,

op.created_at AS create_time,

opc.departure_date,

opc.end_date,

opc.company,

opc.channel_id,

opc.retail,

opc.final_cost,

opc.has_pay,

opc.commission_price,

opc.commission_type,

opc.commission_value \

FROM

order_product_customize AS opc \

LEFT JOIN order_product AS op ON opc.order_product_id = op.order_product_id \

WHERE

{ 0 }

ORDER BY

opc.created_at DESC { 1 }

(2) 手动分页:

nextPage = limit_start+page_size

result['data_list'] = result['data_list'][limit_start:nextPage]

result['total_num'] = result['total_num'] - self.delNum

3 报错信息:

没有报错,只是执行时间极其长

一台比较好的机器,执行时间如下:

4 已经尝试过的办法

(1)记录删除次数再减去(因为每次都只查一页,只能获取当前页删除的条数)

(2)取符合筛选条件的全量数据(数据量太大,又有循环,导致速度极其慢)

(3)每次查20条左右数据,然后获取没删除的前10条,记录最后一条的id(动态分页,无法获取每一页第一条数据,无法保证20条经过筛选后还能剩下10条)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值