Petua untuk meningkatkan kelajuan pertanyaan ahli WooCommerce: Optimumkan indeks MySQL
P粉333186285
P粉333186285 2023-08-26 11:09:08
0
1
626
<p>Saya mempunyai tapak web berasaskan keahlian WooCommerce menggunakan sambungan keahlian Teams for WooCommerce. Walaupun mempunyai pangkalan pengguna yang besar (>70,000 pengguna), ia menunjukkan prestasi yang sangat baik 95% pada setiap masa. Kami menerima kira-kira 10,000 lawatan setiap hari dengan masa respons di bawah satu saat. </p> <p>Semasa musim puncak apabila pengguna perlu melengkapkan latihan, tapak mungkin ranap disebabkan oleh beban permintaan tidak dicache serentak. </p> <p>Menggunakan alat Pemantau Pertanyaan, satu pertanyaan menarik perhatian kami: 0.0375 saat (purata kurang daripada 0.0050 saat). Pertanyaan ini menyemak perkara berikut: </p> <ol> <li><p>Adakah pengguna semasa ahli pasukan dengan langganan aktif? </p> </li> <li><p>Adakah mereka mempunyai kebenaran untuk melihat artikel ini? </p> </li> </ol> <p>Berikut ialah pertanyaan itu sendiri: </p> <pre class="brush:php;toolbar:false;">SELECT wp_posts.* DARIPADA wp_posts KIRI SERTAI wp_postmeta _teams_pm PADA wp_posts.ID = _team_pm.post_id DAN _teams_pm.meta_key = '_id_ahli' DAN _team_pm.meta_value = 2 KIRI SERTAI wp_usermeta_teams_um ON _teams_um.user_id = _teams_pm.meta_value DAN _teams_um.meta_key = CONCAT( '_wc_memberships_for_teams_team_', wp_posts.ID, '_role' ) DI MANA 1=1 DAN ((wp_posts.post_type = 'wc_memberships_team' DAN (wp_posts.post_status = 'terbitkan' ATAU wp_posts.post_status = 'acf-disabled' ATAU wp_posts.post_status = 'peribadi'))) DAN (_teams_um.meta_value IN('manager', 'member') ATAU wp_posts.post_author = 2 ) PESANAN OLEH wp_posts.post_date DESC</pre> <p>Ia dipanggil oleh: </p> <pre class="brush:php;toolbar:false;">"WP_Query->get_posts() wp-includes/class-wp-query.php:3111 WP_Query->query() wp-includes/class-wp-query.php:3542 WP_Query->__build() wp-includes/class-wp-query.php:3653 SkyVergeWMTTeams_Handler->get_teams() wp-content/plugins/woocommerce-memberships-for-teams/src/Teams_Handler.php:446 wc_memberships_for_teams_get_teams() wp-content/plugins/woocommerce-memberships-for-teams/src/Functions/Teams.php:100 ctz_membership_get_user_team_id() wp-content/plugins/core-functionality/temp/wc_teams.php:603"</pre> <p>Adakah sesiapa mempunyai sebarang idea untuk mengindeks cara mempercepatkan pertanyaan ini? Saya tidak cukup mahir dengan SQL untuk mengetahui di mana peletakan indeks terbaik. </p> <p>Kami menjangkakan peningkatan yang besar pada hari Isnin, jadi saya berharap untuk bersedia pada hujung minggu ini apabila tapak lebih senyap.</p> <p>Terima kasih terlebih dahulu! </p> <p>EDIT: Output menerangkan, awalan dan nama pangkalan data tanpa nama: </p> <pre class="brush:php;toolbar:false;">+----+-------------+------------ -----------------------------+---------------------- ---- ----+-------------------+---------+------------ ---- ------------------------------+------+------- ---+- ------------------------------------------ --+ |. pilih_jenis | +----+-------------+--------------+--------------- -+- -------+---------------------------------+------ ------ ------+---------+-------------------------- ------- -------------+------+----------+----------- ------- ----------------------------+ |. |. wp_posts | |. _team_pm | |. _team_um | +----+-------------+--------------+--------------- -+- -------+---------------------------------+------ ------ ------+---------+-------------------------- ------- -------------+------+----------+----------- ------- ----------------------------+ 3 baris dalam set, 4 amaran (0.00 saat)</pra> <p><br /></p>
P粉333186285
P粉333186285

membalas semua(1)
P粉155710425

Pemalam itu sepatutnya membantu dengan beberapa pertanyaan.

Ini mungkin membantuwp_posts

INDEX(post_type, post_status, post_author, ID, post_date)
Bagi mempunyai berbilang indeks di atas meja...pertanyaan yang berbeza memerlukan indeks yang berbeza. MySQL hanya menggunakan satu indeks setiap rujukan jadual [dengan pengecualian yang jarang berlaku]. Sebenarnya terdapat 3 pertanyaan dalam pertanyaan anda, satu untuk siaran dan dua untuk postmeta.

Disediakan oleh anda

supaya saya dapat mengetahui perkara yang sedang berlaku (dan lebih baik menjawab soalan Oliver). EXPLAIN似乎不一致。请提供两个表的SHOW CREATE TABLE Susunan dalam klausa

tidak penting. INDEX中的列的顺序很重要;在WHERE

Terdapat dua tempat bermasalah dalam pertanyaan; mengelakkannya

mungkin membantu prestasi: : CONCATOR。这是OR

AND ( _teams_um.meta_value    IN('manager', 'member')
      OR wp_posts.post_author = 2 )
Tiada indeks boleh membantu. Walau bagaimanapun, ia mungkin tidak dapat diperbaiki kerana keperluan aplikasi.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan