이 블로그를 지원하는 MySQL 데이타베이스는 CPU의 엄청난 규모를 소모해, 지도하는 3-4 시간 내려간 위치를 차지하기 위하여 효과적으로 이 주. 나는 명백한 범죄자를 알고 있었다. 그러나 현실은 달랐다.

나는 얼마 동안 나는 숨겨지지 않은, 엄청나게 큰 질문이 있고 MySQL 서버 짐에 공헌하기 위하여 확률이 높다는 것을 알고 있었다:
추려낸 cat_ID, 종류, "조사"로 생각으로 cat_name (*)
$wpdb->categories에서, $wpdb->post2cat, $wpdb->posts
cat_ID = category_id 곳에
category_nicename! = "표제" 및 ID = post_id
post_status는 = "간행한다"
cat_name에 의하여 그룹
조사 (*) > 10가 있
"조사" DESC에 의하여 순서
한계 0, 10

나는 기능을 재갈을 물리기 없이 이것을 낙관하는 명백한 방법을 볼 수 없었다. 만일 당신이 wondeering category_nicename를 대용한! = cat_ID를 가진 "표제"는 = 37 돕지 않는다.

나는 또한 느린 질문 문제를 정확하게 지적하기 위하여 통나무 이용에 대하여 생각했다. 다행히 그(것)들의 아무도는 요구되지 않았다. 나는 친절한 WestHost 높은 짐 지원 에게서 전자 우편을 얻었다. Jonny는 반복적으로 "쇼 충분히 달려서 PROCESSLIST를 알아냈다; " 범죄자가:

명백한 cat_ID, cat_name를 선정하십시오
st_categories에서, st_post2cat
category_nicename에 의하여 순서;

이것은 저를 깜짝 놀라게했다. 토륨 질문은 3-5 초 사이에서 어디에서든지 가지고 간다. 다수 동시 요구를 가진 높은 짐에서 서버를 과대 적재하게 충분히 좋은. 해결책은 믿을 수 없을 만큼 간단했다:

명백한 cat_ID, cat_name를 선정하십시오
st_categories에서
category_nicename에 의하여 순서;

본래 질문은 과다해고 헛되었다. 원래 나는 그(것)들에 있는 한개 이상 포스트를서만 가진 종류를 표시하는 것을 예정했다. 아무리 어딘가에 선의 아래 나는 곳에 항목 추가하는 것을 잊었다. 오늘 나의 종류에는 전부 포스트가 있다. 이렇게 단순히 명부에서에서 st_post2cat를 제거하는 것은 0.01 초에 실행 시간을 끌어내리게 충분히 좋다.

포획 가정 학습은:

  • 좁은 통로 질문을 결코 짐작하지 말라; 그것을 찾아내십시오.
  • "쇼 가득 차있는 가공 명부" 같이 간단한 공구는 수시로 결정 만큼 좋다, 그러나 열심히 느린 질문 통나무 같이 공구를 분석하기 위하여.
  • 당신의 웹 호스팅 공급자에서 좋은 지원이 게다가 아프지 않는다 있는 것은