乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      WordPress 通過(guò)SQL批量刪除指定目錄的文章

              本文講述的是 WordPress 通過(guò)SQL批量刪除指定目錄文章的方法。起因是夜火的一個(gè)采集站,因?yàn)闀r(shí)間久了,數(shù)據(jù)量過(guò)大,總數(shù)據(jù)量有4~5W條了,對(duì)數(shù)據(jù)庫(kù)有奇怪的操作,頻繁讀寫(xiě)硬盤,拖累整個(gè)VPS的速度,影響同VPS其他站點(diǎn),故忍痛刪除數(shù)據(jù)量最龐大的一個(gè)分類文章,約3W條數(shù)據(jù)。

              但是問(wèn)題來(lái)了,WordPress 后臺(tái)想刪除的話,只能20還是30條的刪,刪多了就超時(shí)失敗,而且數(shù)據(jù)庫(kù)臃腫,刪除20~30條也得等半天,導(dǎo)致刪了幾個(gè)小時(shí)也沒(méi)刪掉多少,無(wú)奈只能通過(guò)phpmyadmin進(jìn)行 SQL 批量刪除。

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

              知道這些,就好辦多了。通過(guò)引用文章里介紹的sql語(yǔ)句進(jìn)行查詢刪除就行了,但是因?yàn)槟瞧恼聦?xiě)的比較早,對(duì)應(yīng)的WP版本,數(shù)據(jù)庫(kù)結(jié)構(gòu)可能有所不同,需要進(jìn)行修改一下,當(dāng)然,我這里所說(shuō)的WordPress 通過(guò)SQL批量刪除指定目錄文章的方法也是針對(duì)目前的wordpress 3.3.1版本。

      引用文章提供的SQL語(yǔ)句:
      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

      經(jīng)過(guò)我修改之后的語(yǔ)句(這里我要?jiǎng)h除的特定目錄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

      稍微精簡(jiǎn)的語(yǔ)句(只查詢出要查找的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個(gè)語(yǔ)句(具體的思路經(jīng)過(guò)1天1夜和酒精的摧殘已經(jīng)想不起來(lái)了):

      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)

      中間因?yàn)閐elete語(yǔ)句老是報(bào)錯(cuò),于是搜了下關(guān)于mysql delete數(shù)據(jù)的語(yǔ)法:對(duì)MySQL DELETE語(yǔ)法的詳細(xì)解析,才知道自己寫(xiě)的不對(duì),哪里要那么多的select那么多的括號(hào),查那么多的表,直接delete from ... using ... where ....就行了。下面是最終的,WordPress指定特定目錄刪除下面所有文章的語(yǔ)句:

      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

      WordPress 通過(guò)SQL批量刪除指定目錄的文章

      這就是我?jiàn)^斗到凌晨1點(diǎn)半的結(jié)果,希望后來(lái)的諸位共勉之,不要像我一樣走那么多彎路,神啊,原諒我這個(gè)不懂MySql的人吧~

      2012.03.10 update:

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

      (2)wp_term_relationships 也需要?jiǎng)h除對(duì)應(yīng)的文章分類關(guān)系,不然記錄條數(shù)和原來(lái)的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里的分類文章數(shù)量計(jì)數(shù)的幾W count 給歸零,這個(gè)可以直接通過(guò)phpmyadmin直接界面操作
      UPDATE `wp_term_taxonomy` SET `count` = '0' WHERE `wp_term_taxonomy`.`term_taxonomy_id` =26 LIMIT 1 ;

      免責(zé)聲明:如果你不懂上面的語(yǔ)句,或者沒(méi)有修改,直接復(fù)制執(zhí)行了,產(chǎn)生的任何后果,夜火我不承擔(dān)任何責(zé)任,因?yàn)檫@是你的失誤,執(zhí)行前一定要慎重!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多