Kami telah memperhatikan waktu muat yang sangat lama ketika akan mengedit posting atau halaman. Menggunakan Query Monitor, kami menemukan bahwa kueri inti WP ini meningkat hingga 15-20-an.
SELECT meta_key
FROM wp_postmeta
GROUP BY meta_key
HAVING meta_key NOT LIKE '\\_%'
ORDER BY meta_key
LIMIT 30
caller:
meta_form()
post_custom_meta_box()
do_meta_boxes()
Kami menggunakan banyak postmeta karena salah satu dari jenis postingan kami menggunakan sekitar 20 atau lebih bidang khusus. Saya akan mengatakan mungkin kita terlalu mengandalkan postmeta, tapi ini sepertinya permintaan yang sangat tidak efisien, melihat bahwa itu bahkan tidak memilih ID posting.
Apakah ini masalah umum? Apakah ada cara untuk menonaktifkan fungsi ini melalui filter? Terima kasih atas masukannya.
meta_form()
fungsinya dan ini memang query SQL yang dihasilkan dari fungsi inti itu. Anda dapat mencoba menambahkan metabox khusus Anda sendiri dengan modifikasi pada kodemeta_form()
dan menggunakan di sana SQL query yang Anda sarankan. Saya menemukan tiket trac tertutup # 8561 ini . Anda mungkin dapat membuat tiket lain atau mencoba untuk membuka kembali tiket ini? PS: Perhatikan bahwa halaman induk yang memilih metabox juga bermasalah. Jika Anda mendapat 1 juta halaman, maka semuanya akan muncul sebagai opsi pilih!meta_form()
fungsi. Saya memperbarui jawabannya - kueri inti SQL telah disesuaikan di WP versi 4.3 .. Apakah Anda melihat peningkatan kinerja dengan kueri SQL baru ini dibandingkan denganpost_id
batasan tambahan kami ?Jawaban:
Jika Anda ingin menguji SQL khusus Anda untuk melihat bagaimana hal itu mempengaruhi waktu pemuatan, Anda dapat mencoba bertukar kueri ini:
Di sini kita menggunakan
add_meta_boxes_{$post_type}
pengait, di mana$post_type = 'post'
.Di sini kami menukar seluruh permintaan, tetapi kami juga bisa menyesuaikannya untuk mendukung batas dinamis.
Semoga Anda dapat menyesuaikan ini dengan kebutuhan Anda.
Memperbarui:
Permintaan SQL inti yang berpotensi lambat ini, kini telah disesuaikan di WP versi 4.3 dari
untuk:
Lihatlah tiket inti # 24498 untuk info lebih lanjut.
sumber
Jika Anda menelusuri kode sumber fungsi Anda akan menemukan ini:
Dengan menggunakan
postmeta_form_keys
pengait, Anda dapat menentukan kunci secara manual untuk menghindari memanggil kueri yang tidak efisien ini sama sekali:sumber
Bisakah Anda mencoba ini? Ini bukan solusi, tetapi solusi sementara.
sumber
Menghapus metabox juga mencegah permintaan lambat.
sumber