免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
WordPress 通過SQL批量刪除指定目錄的文章

        本文講述的是 WordPress 通過SQL批量刪除指定目錄文章的方法。起因是夜火的一個采集站,因為時間久了,數據量過大,總數據量有4~5W條了,對數據庫有奇怪的操作,頻繁讀寫硬盤,拖累整個VPS的速度,影響同VPS其他站點,故忍痛刪除數據量最龐大的一個分類文章,約3W條數據。

        但是問題來了,WordPress 后臺想刪除的話,只能20還是30條的刪,刪多了就超時失敗,而且數據庫臃腫,刪除20~30條也得等半天,導致刪了幾個小時也沒刪掉多少,無奈只能通過phpmyadmin進行 SQL 批量刪除。

        進入phpmyadmin之后,找到wp_posts表,發(fā)現(xiàn)根本沒有分類的字段,我就納悶了半天,難道WP那么高級,連分類都不用字段標識?那前臺怎么進行分類顯示的???于是就研究了起來,四處翻表,四處查找。最終還是通過搜索查到了一點資料:WordPress直接訪問數據庫列出指定分類目錄下的所有文章,才知道,原來WP的分類都是寫在wp_term_relationships這個表里,通過文章ID和分類ID或tag的ID對應來進行分類。

        知道這些,就好辦多了。通過引用文章里介紹的sql語句進行查詢刪除就行了,但是因為那篇文章寫的比較早,對應的WP版本,數據庫結構可能有所不同,需要進行修改一下,當然,我這里所說的WordPress 通過SQL批量刪除指定目錄文章的方法也是針對目前的wordpress 3.3.1版本。

引用文章提供的SQL語句:
select ID,post_title,post_date,post_name from wp_posts,wp_term_relationships,wp_term_taxonomy where ID=object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and post_type=’post’ and post_status = ‘publish’ and wp_term_relationships.term_taxonomy_id = $CID and taxonomy = ‘category’ order by ID desc

經過我修改之后的語句(這里我要刪除的特定目錄ID就是26):
select ID,post_title,post_date,post_name from wp_posts,wp_term_relationships,wp_term_taxonomy where ID=object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and wp_term_relationships.term_taxonomy_id = 26

稍微精簡的語句(只查詢出要查找的ID):
select ID from wp_posts,wp_term_relationships,wp_term_taxonomy where ID=wp_term_relationships.object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and wp_term_relationships.term_taxonomy_id = 26

中間為了找到刪除的方法變形的3個語句(具體的思路經過1天1夜和酒精的摧殘已經想不起來了):

select * from wp_posts where wp_posts.id in (select wp_posts.id from wp_posts,wp_term_relationships,wp_term_taxonomy where wp_posts.id=wp_term_relationships.object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and wp_term_relationships.term_taxonomy_id = 26)

select * from wp_posts where wp_posts.id in (select wp_posts.id from wp_posts,wp_term_relationships,wp_term_taxonomy where wp_posts.id=wp_term_relationships.object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and wp_term_relationships.term_taxonomy_id = 26)

delete * from wp_posts where wp_posts.id in (select wp_posts.id from wp_posts,wp_term_relationships,wp_term_taxonomy where wp_posts.id=wp_term_relationships.object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and wp_term_relationships.term_taxonomy_id = 26)

中間因為delete語句老是報錯,于是搜了下關于mysql delete數據的語法:對MySQL DELETE語法的詳細解析,才知道自己寫的不對,哪里要那么多的select那么多的括號,查那么多的表,直接delete from ... using ... where ....就行了。下面是最終的,WordPress指定特定目錄刪除下面所有文章的語句:

delete
from
wp_posts 
using 
wp_posts,
wp_term_relationships,
wp_term_taxonomy 
where 
wp_posts.id=wp_term_relationships.object_id 
and 
wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id 
and 
wp_term_relationships.term_taxonomy_id = 26

這就是我奮斗到凌晨1點半的結果,希望后來的諸位共勉之,不要像我一樣走那么多彎路,神啊,原諒我這個不懂MySql的人吧~

2012.03.10 update:

(1)wp_posts 進行完上面的刪除操作之后,需要對表進行一下優(yōu)化(phpmyadmin后臺界面操作),不然還是原來好幾百M。

(2)wp_term_relationships 也需要刪除對應的文章分類關系,不然記錄條數和原來的wp_posts 一樣,好幾W條。

查詢看下是不是:
SELECT * FROM `wp_term_relationships` where term_taxonomy_id=26

刪除:
delete FROM `wp_term_relationships` where term_taxonomy_id=26

同樣幾W條記錄消滅掉,最后記得優(yōu)化下表。

(3)最后把wp_term_taxonomy里的分類文章數量計數的幾W count 給歸零,這個可以直接通過phpmyadmin直接界面操作
UPDATE `wp_term_taxonomy` SET `count` = '0' WHERE `wp_term_taxonomy`.`term_taxonomy_id` =26 LIMIT 1 ;

免責聲明:如果你不懂上面的語句,或者沒有修改,直接復制執(zhí)行了,產生的任何后果,夜火我不承擔任何責任,因為這是你的失誤,執(zhí)行前一定要慎重!

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
wordpress 數據庫的表結構詳解
Wordpress數據庫結構分析 | 錢本草
WordPress SimpleTags的修改建議
理解和利用 WordPress 中的數據 | wordPress主題庫
WordPress主題制作導航的N種方法
織夢整合wordpress博客系統(tǒng)方法介紹
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服