이 쿼리를 더 빠르게 만들 수 있는지 궁금하신가요? 또는 더 잘 작동하는 다른 유사한 쿼리가 있다면? 를 사용하지 않고이 SQL 쿼리를 더 빠르게 만들 수 있습니까?
SELECT id,source FROM posts
WHERE id = ANY(SELECT image_id FROM `post_tags` WHERE tag_id = (SELECT id FROM `tags` WHERE tag = _utf8 '$TAG' collate utf8_bin))
AND posts.exists = 'n'
ORDER BY posts.ratecount DESC
LIMIT 0,100
는 :
AND posts.exists = 'n'
ORDER BY posts.ratecount
DESC LIMIT 0,100
이 가능한 수준으로 쿼리 속도,하지만 다소 내가 뭘하는지이 필요합니다.
- 태그 테이블에는 '태그'와 'ID'에 대한 고유 색인이 있습니다.
- 태그에는 83K 개의 행이 있습니다.
- Post_tags에는 'image_id', 'tag_id'에 대한 고유 색인이 있습니다. 또한 각각에 대한 정상적인 색인.
- Post_tags에는 471K 개의 행이 있습니다.
- 게시물에는 'id'에 대한 고유 색인이 있습니다. 또한 '존재'와 '비율 계산'에 대한 일반 색인입니다.
- 게시물 테이블에는 약 1.1M 개의 행이 있습니다.
색인이 무엇입니까? – dfb
테이블 게시물 및 post_tags에있는 데이터의 양은 어느 정도입니까? 필요한 모든 지표를 설정 했습니까? – Tobi
쿼리 플랜에 무엇이 표시됩니까? 색인이 실제로 사용됩니까? 정상적인 조인으로 다시 작성하면 효과가 있습니까? (때로는 기획자가 움직이지 않을 수도 있습니다.) 테이블 통계가 업데이트 되었습니까? 어쨌든 모든 정보를 원래 게시물에 넣으십시오. DBA에서 시도해보십시오. 투표가 "너무 현지화 된"것으로 마감했습니다. –