Menjalankan SELECT sederhana pada database WordPress yang dioptimalkan membutuhkan waktu 20 detik, karena mengembalikan 62.000 catatan. Adakah yang punya saran tentang cara meningkatkan pengaturan waktu ini?

Kode saya:

global $wpdb;
$entries_sql = $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '%s' AND meta_value='%s'", 'sht_ranking_id', $ranking_id);
$entry_ids = $wpdb->get_results($entries_sql, ARRAY_N);

(Saya juga mencoba menjalankan SQL mentah menggunakan PHPMyAdmin dan tidak lebih cepat.)

1
Mark Howells-Mead 12 Mei 2021, 15:53

1 menjawab

Jawaban Terbaik

Hasil yang ditetapkan dengan 62 ribu baris adalah besar, meskipun hanya satu kolom (post_id dalam kasus Anda). Ini akan memakan waktu untuk mengambilnya bahkan jika MySQL bekerja secara optimal. Itu selalu bijaksana hanya untuk mengambil baris yang Anda butuhkan.

Karena itu, Anda dapat mencoba menambahkan indeks pada tabel wp_postmeta. Ini dapat mengoptimalkan aspek MySQL dari kueri Anda.

ALTER TABLE wp_postmeta ADD KEY meta_key_value (meta_key(90), meta_value(90), post_id);

Silakan, gunakan phpmyadmin untuk menjalankan

EXPLAIN SELECT post_id FROM whatever your query says....

sebelum dan sesudah Anda menambahkan kunci itu. Akan sangat membantu jika Anda memposting hasil EXPLAINs tersebut dengan mengedit pertanyaan Anda.

1
O. Jones 12 Mei 2021, 15:08