我有这个查询,工作正常。它根据当前时间删除旧的记录。删除多个表中的多行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