DELETE FROM wp_commentmeta WHERE comment_id NOT IN(SELECT comment_id FROM wp_comments);
DELETE FROM wp_commentmeta WHERE meta_key REGEXP akismet;
-- 删除记录评论被删除的时间,这些信息用处不是很大
DELETE FROM wp_commentmeta WHERE meta_key LIKE %trash%;
-- 直接全部删除wp_commentmeta数据表内容,影响不会太大,这里面不会涉及重要的数据
TRUNCATE TABLE wp_commentmeta;
清理其他数据表
-- 删除所有垃圾留言(包括待审、垃圾评论、回收站评论)
DELETE FROM wp_comments WHERE comment_approved != 1;
-- 删除待审评论
DELETE FROM wp_comments WHERE comment_approved = 0;
-- 删除垃圾评论
DELETE FROM wp_comments WHERE comment_approved = spam;
-- 删除回收站评论
DELETE FROM wp_comments WHERE comment_approved = trash;
--孤立的关系信息(文章、评论等删除后残留在wp_term_relationships表中的信息)
DELETE FROM wp_term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN(SELECT id FROM wp_posts);
-- 删除没有的标签(有些文章删除了,但标签还在,WordPress不会自动删除的)
DELETE a,b,c FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE(
c.taxonomy = post_tag AND
c.count = 0
);
优化数据库表
原理:数据库优化不涉及数据的删除,是将数据库的表的状态调整好。在使用phpmyadmin时候,或许您会看到数据库表后面有多余 xxMB 的字样,这个指的是那些已经分配给当前表但是却没有使用的空间。这个多余是没有什么害处的,他不会占用你的空间。当删除一个表的一部分记录时,这些记录仍然保持在一个linked list 中,当插入新数据时会再次使用这些老纪录的位置。所以删除纪录会闲置一些空间造成你说的“多余”。
$blog = mysql_pconnect($hostname_blog, $username_blog, $password_blog) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_blog, $blog);
mysql_query(DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = "revision");
mysql_query(DELETE FROM wp_posts WHERE NOT(post_status = "publish" AND post_type IN("post","nav_menu_item","page"));
mysql_query(DELETE FROM wp_postmeta WHERE meta_key = "_edit_lock");
mysql_query(DELETE FROM wp_postmeta WHERE meta_key = "_edit_last");
mysql_query(DELETE FROM wp_commentmeta WHERE meta_key LIKE "%trash%");
mysql_query(DELETE FROM wp_comments WHERE comment_approved != "1");
mysql_query(DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL);
mysql_query(DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments));
mysql_query(DELETE FROM wp_term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM wp_posts));
mysql_query(DELETE FROM wp_options WHERE option_name REGEXP "_transient_");
mysql_query(DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attached_file’);
mysql_query(DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_attachment_metadata’);
mysql_query("delete from wp_posts where (post_status=auto-draft or post_status=inherit) and post_type=post");