Запрос работает слишком медленно, когда нет результатов - PullRequest
1 голос
/ 22 марта 2012

У меня следующая проблема.Мой запрос выполняется в течение 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

У меня ~ 80 000 записей в main_pages_options и ~ 20 000 записей в main_pages.

1 Ответ

1 голос
/ 22 марта 2012

Попробуйте создать многостолбцовый индекс для option_id и value.

...