我有這個查詢,工作正常。它根據當前時間刪除舊的記錄。刪除多個表中的多行MYSQL
$cleanacc_1 = "DELETE FROM $acc_1
WHERE `Scheduled` < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 SECOND)";
$result = mysql_query($cleanacc_1);
但是,有超過100個表(帳戶)需要刪除,我想知道如果我可以將它們組合成一個查詢。如果可能如何?
我有這個查詢,工作正常。它根據當前時間刪除舊的記錄。刪除多個表中的多行MYSQL
$cleanacc_1 = "DELETE FROM $acc_1
WHERE `Scheduled` < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 SECOND)";
$result = mysql_query($cleanacc_1);
但是,有超過100個表(帳戶)需要刪除,我想知道如果我可以將它們組合成一個查詢。如果可能如何?
這意味着你創建一個新表爲每個帳戶。爲什麼你不爲一個表中的每個帳戶創建記錄?
例如...
create table account (id int unsigned primary key auto_increment, other fields...);
如果你改變你的表結構,你將能夠使用一個單一的查詢,刪除個人賬戶的記錄......每個
delete from account where condition=true;
個人交易記錄帳戶然後存儲在另一個表中,幷包含它們涉及的帳戶ID ...
create table transaction (id, account_id, other transaction fields);
如果您不更改數據庫設計,則需要編寫循環遍歷每個表並運行刪除查詢的PHP代碼。這是非常低效的,我建議你按照建議重新設計表格。
如果你不明白,爲什麼我的表redsign的建議是一個更好的方法,發佈有關數據庫的更多信息,我會更詳細的工作的例子解釋。
無法做到這一點,AFAIK;反正,我不認爲它會運行100個查詢一個很大的問題,假設你沒有運行爲每個請求左右..
你期待的性能問題?如果是這樣的話,我可能會使用一個cron作業運行每X分鐘即查詢..
,你可以設置表的景色,也然後運行對視圖刪除SQL。這也應該刪除基礎表數據。您的表架構和權限可能會影響此功能是否有效。看看這個答案,這可能也有幫助。
Does deleting row from view delete row from base table - MYsql?
請考慮下面的例子。
我在以下結構中有三個表。
表名:T1,T2,T3
字段:ID,姓名
我要去執行與重新編碼ID一個條件刪除查詢必須小於10
DELETE FROM t1, t2,t3 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id<10 and t2.id<10 and t3.id<10.
的查詢已成功執行(MySql)。我得到了預期的產出。
因此,請以您的情況嘗試相同的方式。
這可以工作,但我不得不改變爲單個表來緩解處理器負載。 – MaxBux 2012-02-16 06:39:10
我同意先生,我應該重新設計。但是,我正在學習MySQL,所以請放輕鬆一點:-) 除了表名之外,我對不同的帳戶有不同的表格;結構是相同的,即 ID,帳戶,計劃,消息 我也做了多選擇語句,它在處理器上收費。 你會如何推薦我繼續? 謝謝 – MaxBux 2012-02-07 14:14:23
我設法使用一個表,它的高效以及更容易管理。謝謝 – MaxBux 2012-02-16 06:40:07