다음과 같은 문제가 있습니다. 항목은 항목과 일치하는 항목이있을 때 0.0002 초 동안, 항목이없는 경우에는 0.0367 동안 실행됩니다.결과가 없을 때 쿼리가 너무 느리게 작동합니다.
CREATE TABLE IF NOT EXISTS `main_pages_options` (
`page_id` int(11) NOT NULL,
`value` varchar(255) NOT NULL,
`option_id` int(11) NOT NULL,
UNIQUE KEY `page_id` (`page_id`,`option_id`),
FULLTEXT KEY `value` (`value`)
) ENGINE=MyISAM ;
SELECT page_id
FROM main_pages_options
WHERE (option_id = 1 AND value = 'Test 1')
OR (option_id = 2 AND value = 'Test 2')
OR (option_id = 3 AND value = 'Test 3')
GROUP BY page_id
HAVING COUNT(*) = 3
SELECT page_id
FROM main_pages_options
WHERE (option_id = 1 AND value = 'Test 7')
OR (option_id = 2 AND value = 'Test 2')
OR (option_id = 3 AND value = 'Test 3')
GROUP BY page_id
HAVING COUNT(*) = 3
main_pages_options에는 ~ 80,000 개의 항목이 있고 main_pages에는 ~ 20,000 개의 항목이 있습니다.
'COUNT (*)'를 (COUNT (page_id)) (으)로 변경해 보셨습니까? 또한,'page_id' 컬럼에 AUTOINCREMENT 키를 두어야합니다. – Bojangles
두 가지 쿼리를 표시하십시오. –
항상 3 가지 옵션이 있거나 동적 일 수 있습니까? (다른 시간에는 더 많은 또는 더 적은 "옵션"값을 찾을 수 있습니다.) 또한 가장 많은 항목 수를 가질 것으로 예상되는 다양한 옵션 ID 중 – DRapp