当MySQL数据库达到100条记录/行时,如何自动清空它? 数据库变得非常快,我不能因为上学而一直把它清空(我不能在那里使用我的笔记本电脑)。 当表中有大量记录时,表单的操作将花费更长的时间来完成,这就是为什么我希望在达到100条记录时删除记录。 我是MySQL事物的新手。我真的很适合解决我的问题的答案:)
数据库名称为:db181894_names
表格是:姓名
MySQL代码:jsfiddle.net/LFNHr /
答案 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
告诉我这是否有道理 - 咖啡因