بهینه سازی جدول postmeta از طریق حذف متاهای مربوط به نوشته های حذف شده

تاریخ: 03 آوریل 2021

در وردپرس مفهومی به نام پست تایپ داریم که اشاره به نوعی از محتوا می کند. مثلا نوشته ها در وردپرس نوعی محتوا هستند.

این نوع محتوا در دیتابیس وردپرس، در دو جدول wp_posts و wp_postmeta نگهداری می شوند.

اطلاعات اساسی هر محتوا در جدول wp_posts و اطلاعات اضافی آن محتوا که اصطلاحا به آن متای محتوا گفته می شود، در جدول wp_postmeta نگهداری می شوند. (چیزی شبیه به نگهداری کاربران در دیتابیس)

این دو جدول به وسیله ی آیدی محتوا که یک ستون از جدول wp_posts است، به هم متصل می شوند.

هر محتوا می تواند یک یا چند متا داشته باشد در حالی که هر متا فقط مختص به یک محتوا است.

ممکن است تحت شرایطی خاص، محتوای ما از جدول wp_posts حذف شود در حالی که متای آن هنوز در جدول wp_postmeta وجود دارد.

معمولا این مقادیر متا که هیچ محتوایی ندارند، کاربردی ندارند و وجود آن ها در جدول wp_postmeta، صرفا بر حجم آن افزوده و باعث کاهش عملکرد آن می شود.

لذا بهتر است هر چند وقت یکبار، وجود این مقادیر بررسی شده و پاکسازی این جدول صورت گیرد.

 

حذف متاهای نوشته های حذف شده از طریق phpmyadmin

وارد پنل مدیریت هاست خود شوید، یک فول بکاپ تهیه کنید و سپس به phpmyadmin وارد شوید.

دیتابیس سایت وردپرسی خودتان را سلکت کنید.

بر روی تب sql بزنید و کوئری زیر را اجرا کنید:


DELETE FROM My_postmeta WHERE NOT EXISTS ( SELECT * FROM My_posts WHERE My_postmeta.post_id = My_posts.ID );

 

دقت کنید که لازم است به جای My، پیشوند جداول دیتابیس خود را وارد کنید. (به صورت پیشفرض wp می باشد.)

تبریک می گویم. شما اکنون توانستید متاهای اضافی نوشته های حذف شده را پاک کنید و جدول wp_postmeta را بهینه تر از قبل نمایید.

اگر در مورد این مطلب نظری دارید و یا مشکلی در آن می بینید لطفا از طریق کامنت ما را در جریان بگذارید …

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.


  • ایمان گفت:

    سلام
    کد بالا رو که گفتید وقتی وارد میکنم خطای زیر رو نشون میده .
    لطفا بیشتر راهنمایی فرمایید

    SQL query: Copy Documentation

    DELETE FROM My_postmeta WHERE NOT EXISTS ( SELECT * FROM My_posts WHERE My_postmeta.post_id = My_posts.ID );
    MySQL said: Documentation

    #1146 – Table ‘ramaair_ramaa.My_postmeta’ doesn’t exist

    • بیاوردپرس گفت:

      سلام و احترام
      به جای My از پیشوند جداول دیتابیس خود استفاده کنید
      مثلا wp_postmenta

  • طراحی افزونه وردپرس