정말 느리게 실행되는 SQL 쿼리가 있는데 그 이유에 대해 당황 스럽습니다. 쿼리는 다음과 같습니다MySQL 쿼리가 * 매우 * 천천히 실행 중임
SELECT DISTINCT(c.ID),c.* FROM `content` c
LEFT JOIN `content_meta` cm1 ON c.id = cm1.content_id
WHERE 1=1
AND c.site_id IN (14)
AND c.type IN ('a','t')
AND c.status = 'visible'
AND (c.lock = 0 OR c.site_id = 14)
AND c.level = 0
OR
(
( c.site_id = 14
AND cm1.meta_key = 'g_id'
AND cm1.meta_value IN ('12','13','7')
)
OR
( c.status = 'visible'
AND (
(c.type = 'topic' AND c.parent_id IN (628,633,624))
)
)
)
ORDER BY c.date_updated DESC LIMIT 20
내용 테이블은 약 1250 행이 콘텐츠 메타 테이블은 약 3000 행이 있습니다. 이것은 많은 데이터가 아니며 너무 느리게 실행되는 원인이 될지 잘 모르겠습니다. 모든 생각/의견은 크게 감사하겠습니다.
감사합니다.
성능이 부족한 부분을 보려면'explain'을 사용하십시오. 더 많은 정보를 얻으려면 테이블 구조에 대한 더 많은 정보를 제공해야합니다. –
다음 쿼리에서 반환되는 레코드 수 :'select * from content c left join content_meta cm1 on c.id = cm1.content_id'? – mellamokb
where 절에 인덱스가 있고 열을 기준으로 정렬합니까? – Matthew