对于我的users表中的所有用户,将负信用额大量插入到我的事务表中的最有效方法是什么

时间:2015-02-27 05:50:58

标签: php mysql mysqli

数据库:MySQL版本5.5.38   使用mysqli连接

服务器代码库:PHP 5.4.30

我需要一些建议,以最有效的方式根据另一个表的内容将记录批量插入表中。

我们的系统有“学分”。 “积分”可以购买和转让。积分会随着时间的推移而过期(您每天损失X),并通过获取交易表中CreditTotal列的总和来计算。

我想为系统中的每个用户插入一个数量为1且信用值为-X的事务,该事务由我们服务器上的cron任务触发。

这需要作为日常任务运行,以便在信用额度降低时提前通知用户。我可能拥有大量的系统用户。

表1:交易

Field name      Type        Allow nulls?        Key     Default value       Extras   
TransKey    bigint(20)  No  Primary     NULL    auto_increment
OfferKey    bigint(20)  Yes     None    NULL    
ProdKey     bigint(20)  Yes     None    NULL    
Credit  bigint(20)  Yes     None    NULL    
Qty     bigint(20)  Yes     None    NULL    
TotalPrice  decimal(10,2)   Yes     None    NULL    
CreditTotal     bigint(20)  Yes     None    0   
Price   decimal(10,2)   Yes     None    NULL    
TranDteTme  timestamp   No  Indexed     CURRENT_TIMESTAMP   
UserKey     bigint(20)  Yes     Indexed     NULL        



Field name      Type        Allow nulls?        Key     Default value       Extras   
UserKey     bigint(20)  No  Primary     NULL    auto_increment

有效地做到这一点的最佳方式是什么,是否有任何我可以避免的明显陷阱?

1 个答案:

答案 0 :(得分:0)

值得看看MySQL event scheduler而不是CRON / PHP。 对于这种大规模批处理操作,您可能需要考虑编写MySQL Function or Procedure