Petua untuk meningkatkan kelajuan pertanyaan ahli WooCommerce: Optimumkan indeks MySQL
<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>