我遇到以下问题。当有条目匹配条目时,我的查询执行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 2012-03-22 16:38:04
请显示两个查询。 – 2012-03-22 16:49:05
是否总是3个选项或将它是动态的(不同的时间可以有更多或更少的“选项”值期待的。此外,不同的选项ID,预计将有条目数最少的。 – DRapp 2012-03-22 17:20:00