簡體   English   中英

對於我的用戶表中的所有用戶,將負信用額批量插入我的交易表中的最有效方法是什么

[英]What is the most efficient way to bulk insert negative credit amounts into my transaction table for all users in my users table

數據庫: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

有效執行此操作的最佳方法是什么,是否有任何我可以避免的陷阱?

值得一看的是MySQL事件調度程序,而不是CRON / PHP。 對於這種大規模批處理操作,您可能需要考慮編寫MySQL函數或過程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM