WordPress MySQL 数据库 wp_posts 表中哪些记录可以删除

Posted by NosaLee in WordPress Experience on 17-05-2012. Tags:

作者:牧山道人
原文地址:http://www.seeksunslowly.com/clean-wordpress-mysql-wp_posts-data-sc
转载请注明出处,谢谢。
_____________________________________

WordPress 会自动保存一些你并不需要的内容到其 MySQL 数据库中,这将使库表记录数大大增加,数据库文件体积增大,从而在一定程度上影响博客/网站访问速度。

所以,我们有必要对这些自动保存的数据进行清理。
注:有人说可以用插件清,例如 wp-optimize,但本道不建议这么做,因为 WordPress 总共就这么几张表,用 phpMyAdmin 登录数据库后,很容易找到并使用 SQL 语句清理掉冗余数据。另外,保持后台干净,能不装插件尽量不装,这也是使用 WordPress 的原则之一。

下面正式开始吧:
最占空间的资源是啥?当然就是文章本身。所以我们集中精力清理这个就行了。
文章数据是存储 wp_posts 表中(望文知义),你也可以浏览该表数据验证。

拿本博现在的数据来说,文章数其实只有 400 多篇,但实际却有 862 篇文章,几乎存在一半的垃圾数据需要清理(而且之前已经清理过一次),如下图所示:
清除 WordPress 冗余数据

浏览 wp_posts 表数据,可以看出,正式发布的文章 post_status 值为 publish(即状态为已发布),所以我们先用以下 SQL 看看状态不为 publish 的记录有多少:

1
2
3
SELECT *
  FROM `wp_posts`
 WHERE `post_status` <> 'publish'

经查,有 399 条 post_status 不为 publish 的记录,的确占了一半左右。

进一步,我们看看都有哪些状态值及其条数,使用如下 SQL:

1
2
3
4
SELECT `post_status` , COUNT( 1 )
  FROM `wp_posts`
 WHERE `post_status` <> 'publish'
 GROUP BY `post_status`

结果如下:
post_status COUNT(1)
auto-draft 16
draft 2
inherit 381

可以看出 inherit 数据占了大头,这是自动保存的文章继承关系数据,每次编辑保存会产生一条,所以很多。
auto-draft 是在编辑文章的过程中为你作的自动存档,文章已经发布,就不再需要了。
draft 是你手动存的草稿,即正在撰写中的文章,这个需要保留。

所以,我们主要删除 inherit 数据即可,语句如下:

1
2
DELETE FROM `wp_posts`
 WHERE `post_status` = 'inherit'

当然,如果您对本道的分析及做法不完全信任,您可以先在 phpMyAdmin 中导出 wp_posts 数据作个备份,再执行删除操作。
另外本文不会告诉你 phpMyAdmin 的具体使用方法以及 SQL 的执行方法,如果不懂,可以查询相关资料。

Comments:

There are (1) Comments for the WordPress MySQL 数据库 wp_posts 表中哪些记录可以删除

Post a comment