无法优化查询 - 设计错误或查询错误或两者兼而有之?

时间:2017-10-31 10:36:33

标签: mysql

CREATE TABLE `questions` ( 
`question_id` int(5) unsigned NOT NULL AUTO_INCREMENT, 
`FK_quiz_id` int(5) unsigned NOT NULL, 
`question_identify_text` varchar(100) COLLATE utf8_unicode_ci NOT NULL, 
PRIMARY KEY (`question_id`), 
KEY `FK_quiz_id` (`FK_quiz_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

CREATE TABLE `question_multilingual` ( 
`question_multilingual_id` int(5) unsigned NOT NULL AUTO_INCREMENT, 
`FK_question_id` int(5) unsigned NOT NULL, 
`FK_language_id` smallint(3) unsigned NOT NULL, 
`question` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
PRIMARY KEY (`question_multilingual_id`), 
UNIQUE KEY `FK_question_id` (`FK_question_id`,`FK_language_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

CREATE TABLE `choices` ( 
`choice_id` int(5) unsigned NOT NULL AUTO_INCREMENT, 
`FK_question_id` int(5) unsigned NOT NULL, 
`choice_identify_text` varchar(100) COLLATE utf8_unicode_ci NOT NULL, 
PRIMARY KEY (`choice_id`), 
KEY `FK_question_id` (`FK_question_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

CREATE TABLE `choice_multilingual` ( 
`choice_multilingual_id` int(5) unsigned NOT NULL AUTO_INCREMENT, 
`FK_choice_id` int(5) unsigned NOT NULL, 
`FK_language_id` smallint(3) unsigned NOT NULL, 
`choice` varchar(100) COLLATE utf8_unicode_ci NOT NULL, 
PRIMARY KEY (`choice_multilingual_id`), 
UNIQUE KEY `FK_choice_id` (`FK_choice_id`,`FK_language_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

这些是表结构。

EXPLAIN SELECT * FROM `questions` inner join question_multilingual on question_multilingual.FK_question_id = questions.question_id AND question_multilingual.FK_language_id = 1 INNER JOIN choices ON choices.FK_question_id = questions.question_id INNER JOIN choice_multilingual ON choice_multilingual.FK_choice_id = choices.choice_id AND choice_multilingual.FK_language_id = 1 WHERE FK_quiz_id = 1


1   SIMPLE  choice_multilingual NULL    ALL FK_choice_id    NULL    NULL    NULL    14  10.00   Using where 
1   SIMPLE  question_multilingual   NULL    ref FK_question_id,FK_language_id   FK_language_id  2   const   2   100.00  NULL    
1   SIMPLE  choices NULL    eq_ref  PRIMARY,FK_question_id  PRIMARY 4   quizzes.choice_multilingual.FK_choice_id    1   14.29   Using where 
1   SIMPLE  questions   NULL    eq_ref  PRIMARY,FK_quiz_id  PRIMARY 4   quizzes.question_multilingual.FK_question_id    1   100.00  Using where 

我尝试更改复合索引,单个索引。试图添加列。 结果各不相同,但无论如何都没有得到优化的结果。

0 个答案:

没有答案