如何在达到100条记录/行时清空数据库?

时间:2014-02-04 02:31:57

标签: mysql sql database

当MySQL数据库达到100条记录/行时,如何自动清空它? 数据库变得非常快,我不能因为上学而一直把它清空(我不能在那里使用我的笔记本电脑)。 当表中有大量记录时,表单的操作将花费更长的时间来完成,这就是为什么我希望在达到100条记录时删除记录。 我是MySQL事物的新手。我真的很适合解决我的问题的答案:)

数据库名称为:db181894_names

表格是:姓名

MySQL代码:jsfiddle.net/LFNHr /

2 个答案:

答案 0 :(得分:0)

尝试限制向表中添加新记录。

DELIMITER $$

CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
  SELECT COUNT(*) INTO @cnt FROM table1;
  IF @cnt >= 100 THEN
    TRUNCATE TABLE  table1;
  END IF;
END
$$

DELIMITER ;

请注意,对于大型InnoDb表,COUNT操作可能会很慢。

答案 1 :(得分:0)

在100之后删除记录的最简单方法是每次添加一个int ++,或者添加一个跟踪主键的列表。

话虽这么说,就像大多数其他人所说的那样,100条记录是沙漠中的一粒沙子。如果我不得不猜测,问题很可能在于您的查询,或者在进行查询的代码中。

如果您正在做类似的事情:

SELECT * FROM things
foreach (item in items){
  SELECT * FROM things // again
}

这会导致问题。你可以发布你的代码和你的一个记录的模拟版本吗?

编辑:

是的,从代码的外观来看,你正在做一个select,然后对于从查询返回的每个项目,它会对API进行另一个查询(这实际上是第二个查询......只是不在本地)。

如果您对Likers表进行了查询,并构建了另一个名为API_Results的表,并使用您从facebook中提取的信息填充了大部分数据,并使用API​​来查看您尚未看到的内容...可能会更快。

因此,例如,您在数据库中构建第二个表,其中包含您从API收集的所有字段,然后是从本地数据库if_exists请求所述数据的方法......如果不是,则从API中提取数据填充本地副本以及您正在构建的页面。

RE-编辑:

tuples1 = SELECT * FROM Likers

foreach( item in tuples1):
  tuples2 = SELECT * from API_Results WHERE primarykey_in_tuples1 == field_in_API_Results
  if(tuples2 == NOTHING):
    // Grab API From FaceBOok
    // INSERT API_Results (value, names, in, table) VALUES (some, values, from, facebook)
    // Generate Page from Values
  else:
    // Generate Page from tuples2

告诉我这是否有道理 - 咖啡因