phalcon: 当删除循环删除一组数据,需要判断影响的行affectedRows
2016-12-21 22:41
585 查看
phalcon:有一个表,按日期查找半年以为的数据,由于数据量特别大,不能一次:delete删除数据,否则会造成数据表卡顿,数据库锁死。
那么只能循环的删除数据,每次删除100条左右,知道删除为止。,此时需要判断,但删除到没有符合条件的数据,要判断到是否有没有影响到行数。需要$this->db->affectedRows()来判断,删除的sql是否影响到行。
同时我们也不可能:先查找满足条件的数据,然后在删除,虽然能解决,但是此时多了一步查询,然后在foreach删除数据,得不偿失。
在调用:
经过查阅后发现,有一种方法可以避免此错误:
或者带limit:
那么只能循环的删除数据,每次删除100条左右,知道删除为止。,此时需要判断,但删除到没有符合条件的数据,要判断到是否有没有影响到行数。需要$this->db->affectedRows()来判断,删除的sql是否影响到行。
同时我们也不可能:先查找满足条件的数据,然后在删除,虽然能解决,但是此时多了一步查询,然后在foreach删除数据,得不偿失。
在调用:
for($i = 0; $i <10; $i++) { $this->modelsManager->executeQuery("delete FROM Demo"); var_dump($this->db->affectedRows()); } 当执行到i=0时,数据已经完全删除了,以后的1-10部,其实都没有数据,但因为调用的是$this->modelsManager->executeQuery,所以,$this->db->affectedRows() 得值会一直是大于0的状态。 或者当i=0时,删除的数据是null时,以后i=1-10后所有步骤,都会为空。 所以此删除方便不可靠。
经过查阅后发现,有一种方法可以避免此错误:
for($i = 0; $i < 10; $i++) { $this->db->delete("Demo"); 或者: $this->db->delete( "Demo", "条件" ); var_dump($this->db->affectedRows()); }
或者带limit:
for($i = 0; $i < 10; $i++) { $this->db->delete("Demo"); 或者: $this->db->delete( "Demo", "条件 limit 10" ); var_dump($this->db->affectedRows()); }
相关文章推荐
- 【总结】大规模数据测试,数据准备时需要注意的问题(【保护已有数据】【大规模数据影响普通测试】【不要着急删除数据】)
- angular js 综合 循环死数据 全选/反选 过滤 批量删除 提交数据(判断空值) 排序
- [导入]实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除 (转)
- 练习 3.16 删除一组数据中的相同数据
- sql while循环操作 (大数据删除可以用得到) [原创 by lee]
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- asp.net网站中的Gridview循环判断数据是否被选中
- 实现删除主表数据时, 判断与之关联的外键表是否有数据
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- SQL调优:Clustering Factor影响数据删除速度一例
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 使用grep判断是否需要通过sed往文件中增加数据。
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 使用分区删除数据需要注意的问题