方法:宝塔打开你的xiuno网站数据库,进入数据表中找到SQL,执行语句。
![批量删除重名标题帖子与清理删除帖子过后残留的垃圾,减少数据库读取和查询]()
储存帖子数据的分别是“bbs_mythread”“bbs_post”“bbs_thread”“bbs_tag_thread”这4张表
我发现,其中bbs_thread表是储存帖子标题的,bbs_post表是储存帖子内容的,他们都不在同一张表下,bbs_mythread表是储存用户中心发主题记录的,bbs_tag_thread表是标签关联文章的,
首先我用删帖插件试了一下,发现帖子中但凡绑定TAG标签的帖子删除后,关联文章的标签表中数据依然存在,这里我只能说垃圾,这就是xiuno插件不通用都是单独的坏处,所有插件都不能兼容使用。
所以我的逻辑是这样的:首先,先把bbs_thread中标题重复的数据删除掉,只留下1个,执行代码:
此时相同标题的文章删除后,储存内容的表,数据还没有被删除。然后获取标题的fid值,也就是文章的id,分别对“bbs_mythread”“bbs_post”“bbs_tag_thread”这3张表进行查询fid值,如果fid与bbs_thread表的fid不存在则删除该条数据。
SQL依次执行以下代码:
处理bbs_post表留存垃圾
处理bbs_mythread表个人用户中心主题记录留存垃圾
处理标签表bbs_mythread关联主题留存垃圾
效果图:
![批量删除重名标题帖子与清理删除帖子过后残留的垃圾,减少数据库读取和查询]()
![批量删除重名标题帖子与清理删除帖子过后残留的垃圾,减少数据库读取和查询]()
执行清理了一大堆垃圾,读取速度又快了1秒。
上一期的教程我有一张是我3天一共采集发布差不多7W个帖子的截图。使用清理重名标题的帖子后少了足足5W个帖子,包括清理了之前帖子关联的标签数据,用户主题发帖记录等。
![批量删除重名标题帖子与清理删除帖子过后残留的垃圾,减少数据库读取和查询]()
所以,以后发现重名过多的数据时可以利用刚刚的方法来执行操作数据库表。记得每次清理前先执行一遍bbs_thread标题表的SQL语句再依次执行“bbs_mythread”“bbs_post”“bbs_tag_thread”这三张表!教程都在上面,可以从开头的第一个SQL语句代码开始执行,一共是执行4次语句,然后进网站后台清理一下缓存。
如果出现报错,或者执行时间过久报错,那就是你数据库配置没给他分配超时时长。宝塔,打开数据库插件,进入配置搜索:innodb_lock_wait_timeout参数,默认时长好像是50还是60,可以根据你xiuno的数据库中储存的表数据大小来更改,数据较多就设置时长大一点,他的单位是秒,填写数字就行,配置好后重启数据库或者重载数据库!
暂无评论