WooCommerce 회원 쿼리 속도를 향상시키는 팁: MySQL 인덱스 최적화
<p>Teams for WooCommerce 멤버십 확장을 사용하여 WooCommerce 멤버십 기반 웹사이트를 운영하고 있습니다. 거대한 사용자 기반(70,000명 이상의 사용자)을 보유하고 있음에도 불구하고 95%의 시간 동안 매우 우수한 성능을 발휘합니다. 우리는 하루에 약 10,000명의 방문을 받고 있으며 응답 시간은 1초 미만입니다. </p>
<p>사용자가 교육을 완료해야 하는 성수기에는 캐시되지 않은 동시 요청 로드로 인해 사이트가 중단될 수 있습니다. </p>
<p>쿼리 모니터 도구를 사용하여 한 쿼리가 우리의 관심을 끌었습니다: 0.0375초(평균 0.0050초 미만). 이 검색어는 다음 사항을 확인합니다. </p>
<올>
<li><p>현재 사용자가 활성 구독을 보유한 팀의 구성원입니까? </p>
</li>
<li><p>이 기사를 볼 수 있는 권한이 있나요? </p>
</li>
</ol>
<p>검색어 자체는 다음과 같습니다.</p>
<pre class="brush:php;toolbar:false;">wp_posts를 선택하세요.*
wp_posts에서
왼쪽 조인 wp_postmeta _teams_pm
ON wp_posts.ID = _teams_pm.post_id
AND _teams_pm.meta_key = '_member_id'
그리고 _teams_pm.meta_value = 2
왼쪽 조인 wp_usermeta_teams_um
ON _teams_um.user_id = _teams_pm.meta_value
AND _teams_um.meta_key = CONCAT( '_wc_memberships_for_teams_team_', wp_posts.ID, '_role' )
여기서 1=1
AND ((wp_posts.post_type = 'wc_memberships_team'
AND (wp_posts.post_status = '게시'
또는 wp_posts.post_status = 'acf-disabled'
또는 wp_posts.post_status = '비공개')))
AND (_teams_um.meta_value IN('매니저', '멤버')
또는 wp_posts.post_author = 2)
ORDER BY wp_posts.post_date DESC</pre>
<p>다음에 의해 호출됩니다:</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->__construct()
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-functionity/temp/wc_teams.php:603"</pre>
<p>이 쿼리 속도를 높이는 방법에 대한 색인 생성에 대한 아이디어가 있는 사람이 있습니까? 저는 SQL에 익숙하지 않아 최적의 인덱스 배치가 어디에 있는지 알 수 없습니다. </p>
<p>월요일에 큰 폭의 급증이 예상되므로 사이트가 좀 더 조용해지는 이번 주말에 준비를 하시기 바랍니다.</p>
<p>미리 감사드립니다! </p>
<p>EDIT: 익명화된 설명, 접두사 및 데이터베이스 이름 출력: </p>
<pre class="brush:php;toolbar:false;">+----+---------------+--------------- ---------+---------+--------- ---- ----+------+---------+------------ ---- ----------------+------+------- ---+- -------------------------------- ---+
| ID | 선택 가능 | 키 | 필터링 |
+------+---------------+------------+--------------- -+- ----+---------+------ ------ ------+---------+--------------- ------- -------------+------+----------+------------ ------- -------------+
| 1 | 단순 | wp_posts | type_status_date | 100.00 |
| 1 | _teams_pm | ref | PRIMARY | dbname.wp_posts.ID |
| 1 | 단순 | _teams_key | PRIMARY | 100.00 |
+------+---------------+------------+--------------- -+- ----+---------+------ ------ ------+---------+--------------- ------- -------------+------+----------+------------ ------- -------------+
3개 행 세트, 4개 경고(0.00초)</pre>
<p><br /></p>